Pernahkah kamu perlu mengeluarkan teks dari gambar atau dokumen PDF? Seringkali pekerjaan itu bisa memakan banyak waktu. Untungnya, ada alat bantu baru yang bernama Ollama-OCR, sebuah paket Optical Character Recognition (OCR) yang canggih. Ia dirancang untuk mempermudah proses ekstraksi teks dari berbagai format, baik itu gambar maupun PDF, dengan memanfaatkan model bahasa vision (VLM) terbaru yang berjalan melalui Ollama.
Ollama-OCR hadir sebagai paket Python dan juga aplikasi web Streamlit. Ini memberikan fleksibilitas bagi para developer maupun pengguna umum yang menginginkan antarmuka visual yang mudah.
Fitur Utama Ollama-OCR yang Bikin Penasaran
Ollama-OCR dibekali dengan berbagai fitur yang menjadikannya pilihan menarik untuk kebutuhan ekstraksi teks. Berikut beberapa di antaranya:
- Dukungan PDF dan Gambar: Kamu tidak perlu lagi repot memisahkan file. Ollama-OCR bisa menangani keduanya.
- Beragam Model Vision: Integrasi dengan berbagai VLM memungkinkan kamu memilih model sesuai kebutuhan, dari yang cepat hingga yang paling akurat.
- Format Output Fleksibel: Hasil ekstraksi bisa kamu dapatkan dalam berbagai format, mulai dari teks biasa hingga data terstruktur.
- Batch Processing: Kamu bisa memproses banyak file sekaligus, bahkan dengan pelacakan progres.
- Custom Prompts: Ini fitur menarik, di mana kamu bisa memberikan instruksi spesifik kepada model tentang teks apa yang harus diekstrak.
- Dukungan Bahasa: Kamu bisa menentukan bahasa teks untuk akurasi OCR yang lebih baik.
Mengenal Lebih Dekat Model Vision yang Digunakan
Kekuatan Ollama-OCR terletak pada kemampuannya memanfaatkan berbagai model vision bahasa. Setiap model punya karakteristiknya sendiri:
| Model Vision | Fitur Utama | Catatan |
|---|---|---|
| LLaVA | Model efisien untuk pemrosesan real-time | Terkadang bisa menghasilkan output yang kurang akurat |
| Llama 3.2 Vision | Model canggih dengan akurasi tinggi, terutama untuk dokumen kompleks | Direkomendasikan untuk hasil yang presisi |
| Granite3.2-vision | Model ringkas dan efisien, dirancang khusus untuk memahami dokumen visual, mampu mengekstraksi konten dari tabel, grafik, infografis, plot, dan diagram | Ideal untuk analisis dokumen terstruktur |
| Moondream | Model kecil yang dirancang agar berjalan efisien di perangkat edge | Cocok untuk lingkungan dengan sumber daya terbatas |
| Minicpm-v | Mampu memproses gambar dengan rasio aspek apa pun dan resolusi hingga 1.8 juta piksel, misalnya 1344x1344 | Fleksibel untuk berbagai ukuran dan bentuk gambar |
Format Output yang Tersedia
Setelah teks diekstrak, kamu bisa memilih format output yang paling sesuai dengan kebutuhanmu:
- Markdown Format: Output berupa string Markdown yang mempertahankan format teks, termasuk header dan list.
- Text Format: Output berupa string teks biasa yang bersih dan sederhana.
- JSON Format: Output berupa objek JSON yang berisi teks hasil ekstraksi.
- Structured Format: Output berupa objek terstruktur yang berisi teks hasil ekstraksi, cocok untuk data terorganisir.
- Key-Value Pairs: Output berupa dictionary yang berisi informasi berlabel yang diekstrak.
- Table Format: Ekstraksi khusus untuk semua data tabular yang ditemukan.
Cara Memulai dengan Paket Python
Untuk kamu para developer, menginstal dan menggunakan Ollama-OCR sebagai paket Python cukup mudah.
Prasyarat: Sebelumnya, pastikan kamu sudah menginstal Ollama di sistemmu. Lalu, tarik model vision yang ingin kamu gunakan:
bashollama pull llama3.2-vision:11b ollama pull granite3.2-vision ollama pull moondream ollama pull minicpm-v
Instalasi Paket:
bashpip install ollama-ocr
Memproses Satu File: Berikut contoh kode untuk memproses satu gambar atau PDF:
pythonfrom ollama_ocr import OCRProcessor # Inisialisasi prosesor OCR ocr = OCRProcessor( model_name='llama3.2-vision:11b', base_url="http://host.docker.internal:11434/api/generate" ) # Memproses gambar atau PDF result = ocr.process_image( image_path="path/to/your/image.png", # Ganti dengan path ke file gambar atau PDF format_type="markdown", # Pilihan: markdown, text, json, structured, key_value custom_prompt="Extract all text, focusing on dates and names.", # Prompt khusus opsional language="English" # Tentukan bahasa teks ) print(result)
Memproses Banyak File (Batch Processing):
Ollama-OCR juga mendukung pemrosesan batch untuk banyak gambar sekaligus. Kamu bisa mengatur jumlah max_workers untuk pemrosesan paralel dan melacak progresnya.
pythonfrom ollama_ocr import OCRProcessor # Inisialisasi prosesor OCR dengan pekerja paralel ocr = OCRProcessor( model_name='llama3.2-vision:11b', max_workers=4 # Maksimal pekerja untuk pemrosesan paralel ) # Memproses banyak gambar atau PDF batch_results = ocr.process_batch( input_path="path/to/images/folder", # Direktori atau daftar path gambar format_type="markdown", recursive=True, # Mencari di subdirektori preprocess=True, # Mengaktifkan preprocessing gambar custom_prompt="Extract all text, focusing on dates and names.", # Prompt khusus opsional language="English" # Tentukan bahasa teks ) # Mengakses hasil for file_path, text in batch_results['results'].items(): print(f"\nFile: {file_path}") print(f"Extracted Text: {text}") # Melihat statistik print("\nProcessing Statistics:") print(f"Total images: {batch_results['statistics']['total']}") print(f"Successfully processed: {batch_results['statistics']['successful']}") print(f"Failed: {batch_results['statistics']['failed']}")
Aplikasi Web Streamlit yang User-Friendly
Jika kamu lebih suka antarmuka grafis, Ollama-OCR juga menyediakan aplikasi web Streamlit. Aplikasi ini mendukung pemrosesan batch dan menawarkan antarmuka yang intuitif dengan fitur drag-and-drop, pratinjau gambar, pemrosesan real-time, dan kemampuan mengunduh teks yang diekstrak.
Cara Menjalankan Aplikasi Streamlit:
- Clone repositori:
bash
git clone https://github.com/imanoop7/Ollama-OCR.git - Masuk ke direktori repositori:
bash
cd Ollama-OCR - Instal dependensi:
bash
pip install -r requirements.txt - Masuk ke direktori
src/ollama_ocr:bashcd src/ollama_ocr - Jalankan aplikasi Streamlit:
bash
streamlit run app.py
Ollama-OCR juga menyediakan contoh notebook di Google Colab untuk demonstrasi penggunaan, serta integrasi dengan tools seperti Autogen dan LangGraph, menunjukkan potensinya dalam alur kerja yang lebih kompleks. Dengan lisensi MIT, proyek ini terbuka untuk kontribusi dan pengembangan lebih lanjut.
Referensi
https://github.com/imanoop7/Ollama-OCR
