5 poin oleh GN⁺ 2024-08-10 | 1 komentar | Bagikan ke WhatsApp
  • Dirancang untuk meningkatkan kualitas keluaran optical character recognition (OCR) secara signifikan
  • Memanfaatkan teknologi pemrosesan bahasa alami terbaru dan large language model (LLM) untuk mengubah teks OCR mentah menjadi dokumen yang sangat akurat, terformat rapi, dan mudah dibaca

Fitur

  • Mengonversi PDF menjadi gambar
  • OCR menggunakan Tesseract
  • Koreksi kesalahan tingkat lanjut menggunakan LLM (lokal atau berbasis API)
  • Smart text chunking untuk pemrosesan yang efisien
  • Opsi format Markdown
  • Menekan header dan nomor halaman (opsional)
  • Evaluasi kualitas keluaran akhir
  • Mendukung LLM lokal dan penyedia API berbasis cloud (OpenAI, Anthropic)
  • Pemrosesan asinkron untuk peningkatan performa
  • Logging mendetail untuk pelacakan proses dan debugging
  • Akselerasi GPU untuk inferensi LLM lokal

Persyaratan

  • Python 3.12+
  • Tesseract OCR engine
  • Library PDF2Image
  • PyTesseract
  • OpenAI API (opsional)
  • Anthropic API (opsional)
  • Dukungan LLM lokal (opsional, memerlukan model GGUF yang kompatibel)

Cara penggunaan

  1. Letakkan file PDF di direktori proyek
  2. Perbarui variabel input_pdf_file_path pada fungsi main() dengan nama file PDF
  3. Jalankan skrip:
    python llm_aided_ocr.py  
    
  4. Skrip akan menghasilkan beberapa file output, termasuk teks hasil pascapemrosesan final

Cara kerja

Proyek LLM-Aided OCR menggunakan proses multi-tahap untuk mengubah keluaran OCR mentah menjadi teks berkualitas tinggi yang mudah dibaca:

  1. Konversi PDF: Menggunakan pdf2image untuk mengubah PDF input menjadi gambar
  2. OCR: Menerapkan Tesseract OCR untuk mengekstrak teks dari gambar
  3. Text chunking: Membagi keluaran OCR mentah menjadi chunk yang dapat dikelola
  4. Koreksi kesalahan: Setiap chunk diproses berbasis LLM untuk memperbaiki kesalahan OCR dan meningkatkan keterbacaan
  5. Format Markdown (opsional): Memformat ulang teks yang telah dikoreksi menjadi Markdown yang bersih dan konsisten
  6. Evaluasi kualitas: Membandingkan kualitas keluaran akhir dengan teks OCR asli melalui evaluasi berbasis LLM

Ringkasan GN⁺

  • Proyek LLM-Aided OCR adalah sistem yang secara signifikan meningkatkan kualitas keluaran OCR dengan memanfaatkan teknologi pemrosesan bahasa alami terbaru dan large language model
  • Sistem ini mengonversi PDF menjadi gambar, mengekstrak teks dengan Tesseract, lalu memperbaiki kesalahan dan menyusunnya ulang dalam format Markdown melalui LLM
  • Mendukung LLM lokal maupun berbasis cloud, serta mengoptimalkan performa melalui pemrosesan asinkron
  • Proyek ini menyediakan berbagai fitur lanjutan untuk meningkatkan akurasi dan keterbacaan keluaran OCR, dan sangat berguna terutama untuk memproses dokumen besar
  • Proyek dengan fungsi serupa antara lain ABBYY FineReader dan Adobe Acrobat OCR

1 komentar

 
GN⁺ 2024-08-10
Komentar Hacker News
  • Dengan rilis model schnell baru, ada kemungkinan memperoleh dataset untuk menghasilkan model vision SOTA

    • Saat ini sebagian besar model vision didasarkan pada caption CLIP/BLIP lama
    • Model seperti LLAVA atau phi-llava juga masih dibatasi oleh komponen vision yang telah dipra-latih
    • Pipeline Tessy dan LLM efektif, serta membuka kemungkinan model multibahasa dapat membaca dan menerjemahkan hasil digitalisasi
    • LLAVA-PHI3 dapat mentranskripsikan bahasa Ibrani secara konsisten, tetapi memiliki masalah halusinasi
    • Jika model vision SOTA baru muncul, kualitasnya diperkirakan akan meningkat drastis
  • Untuk makalah ilmiah, model nougat dari Meta paling cocok

    • Untuk tagihan dan catatan, model donut lebih baik
    • Kedua model bisa gagal dalam beberapa kasus, dan masalahnya perlu diatasi dengan menggunakan LLM
    • Detail hilang selama proses OCR, sehingga sulit menangani tabel dan grafik secara akurat
    • Google Gemini menyediakan kemampuan fine-tuning untuk gambar, tetapi belum dicoba
    • Prompt few-shot membantu mencegah halusinasi LLM dan menyesuaikannya dengan format yang diminta
  • Berdasarkan percobaan sebelumnya, ini bekerja dengan baik dalam 90% kasus

    • Pada dokumen seperti kontrak sewa, ada kesulitan pada angka dan nama (nama/alamat orang atau tempat)
    • LLM tidak bisa mengetahui secara tepat nilai sewa atau nama orang tertentu
  • Jika halaman PDF diubah menjadi PNG lalu gpt4 diminta mentranskripsikan gambar, hasilnya sangat akurat

    • Lebih akurat daripada Tesseract atau OCR klasik
  • Sekitar 10 tahun lalu pernah mencoba mengenali bahasa Mandarin dengan OCR menggunakan Tesseract

    • Teks bahasa Inggris mudah dirapikan setelah dikenali
    • Dalam bahasa Mandarin, jika satu karakter salah dikenali, kesalahannya sulit dideteksi
    • Gambar dimanipulasi dengan image magic lalu dikirim ke Tesseract, dan pemenang dipilih berdasarkan frekuensi statistik dari kalimat yang dikenali
    • Akurasinya meningkat secara signifikan
  • Mendapat hasil yang lebih baik dengan menggunakan PaddlePaddle

    • Menulis implementasi Python yang memotong buku sampai tingkat kata menggunakan PPOCRv3
    • PPOCRv4 tidak memiliki batas ukuran piksel sehingga "siap langsung dipakai"
    • Model deteksi PPOCRv3 bekerja lebih baik
  • Ditanyakan apakah pernah mencoba paket OCR lain

    • Pernah mengalami masalah Tesseract membaca "77" sebagai "7"
  • Penting untuk menyesuaikan prompt agar model memahami dengan lebih jelas

    • Banyak memikirkan LLM dan dokumen
    • Menganggap OCR akan segera menjadi masalah yang sepenuhnya terselesaikan
    • Tantangannya adalah menjelaskan ambiguitas dan detail dokumen yang kompleks secara efektif kepada model AI
  • Sedang mengerjakan tugas serupa untuk mem-parsing rubrik dan kiriman siswa

    • Tertarik pada integrasi dengan GPT-4V
    • Ingin dihubungi lewat email
  • Bertanya tentang pendekatan memperbaiki kesalahan OCR dengan prompt "fix this text"

    • Mengusulkan metode menggunakan completion model alih-alih chat model untuk memasukkan per token dan mendapatkan probabilitas token berikutnya
    • Menganggap metode ini dapat sangat mengurangi halusinasi