5 puan yazan GN⁺ 2024-08-10 | 1 yorum | WhatsApp'ta paylaş
  • Optik karakter tanıma (OCR) çıktısının kalitesini büyük ölçüde artırmak için tasarlandı
  • En yeni doğal dil işleme teknikleri ve büyük dil modellerini (LLM) kullanarak ham OCR metnini son derece doğru, iyi biçimlendirilmiş ve okunması kolay belgelere dönüştürür

Özellikler

  • PDF'yi görsellere dönüştürme
  • Tesseract kullanarak OCR
  • LLM (yerel veya API tabanlı) kullanarak gelişmiş hata düzeltme
  • Verimli işleme için akıllı metin parçalama
  • Markdown biçimlendirme seçeneği
  • Üstbilgi ve sayfa numarası bastırma (isteğe bağlı)
  • Nihai çıktının kalite değerlendirmesi
  • Yerel LLM ve bulut tabanlı API sağlayıcıları (OpenAI, Anthropic) desteği
  • Performansı artırmak için eşzamansız işleme
  • Süreç takibi ve hata ayıklama için ayrıntılı günlükleme
  • Yerel LLM çıkarımı için GPU hızlandırma

Gereksinimler

  • Python 3.12+
  • Tesseract OCR motoru
  • PDF2Image kütüphanesi
  • PyTesseract
  • OpenAI API (isteğe bağlı)
  • Anthropic API (isteğe bağlı)
  • Yerel LLM desteği (isteğe bağlı, uyumlu GGUF model gerektirir)

Kullanım

  1. PDF dosyasını proje dizinine yerleştirin
  2. main() fonksiyonundaki input_pdf_file_path değişkenini PDF dosya adıyla güncelleyin
  3. Betiği çalıştırın:
    python llm_aided_ocr.py  
    
  4. Betik, son işlenmiş metni içeren birden fazla çıktı dosyası oluşturur

Nasıl çalışır

LLM-Aided OCR projesi, ham OCR çıktısını yüksek kaliteli ve okunması kolay metne dönüştürmek için çok aşamalı bir süreç kullanır:

  1. PDF dönüştürme: pdf2image kullanarak giriş PDF'sini görsellere dönüştürür
  2. OCR: Tesseract OCR uygulayarak görsellerden metin çıkarır
  3. Metin parçalama: Ham OCR çıktısını yönetilebilir parçalara böler
  4. Hata düzeltme: Her parça, OCR hatalarını düzeltmek ve okunabilirliği artırmak için LLM tabanlı işlemden geçirilir
  5. Markdown biçimlendirme (isteğe bağlı): Düzeltilmiş metni temiz ve tutarlı Markdown biçimine yeniden düzenler
  6. Kalite değerlendirmesi: LLM tabanlı değerlendirme ile nihai çıktı kalitesini özgün OCR metniyle karşılaştırır

GN⁺ Özeti

  • LLM-Aided OCR projesi, en yeni doğal dil işleme teknikleri ve büyük dil modellerini kullanarak OCR çıktısının kalitesini büyük ölçüde artıran bir sistemdir
  • PDF'yi görsellere dönüştürür, Tesseract ile metni çıkarır, ardından LLM ile hataları düzeltip Markdown biçiminde yeniden yapılandırır
  • Hem yerel hem de bulut tabanlı LLM'leri destekler ve eşzamansız işleme ile performansı optimize eder
  • Proje, OCR çıktısının doğruluğunu ve okunabilirliğini artırmak için çeşitli gelişmiş özellikler sunar; özellikle büyük belgelerin işlenmesinde faydalıdır
  • Benzer işlevler sunan projeler arasında ABBYY FineReader ve Adobe Acrobat OCR bulunur

1 yorum

 
GN⁺ 2024-08-10
Hacker News yorumları
  • Yeni schnell modelinin çıkışıyla, SOTA görsel modeller üretebilecek veri setlerinin elde edilmesi mümkün olabilir

    • Şu anda çoğu görsel model eski CLIP/BLIP caption'larına dayanıyor
    • LLAVA veya phi-llava gibi modeller de hâlâ önceden eğitilmiş görsel bileşenlerle sınırlı
    • Tessy ve LLM pipeline'ı etkili görünüyor; çok dilli modellerin dijitalleştirilmiş işleri okuyup çevirebilmesinin önünü açıyor
    • LLAVA-PHI3 İbraniceyi tutarlı biçimde yazıya dökebiliyor, ancak halüsinasyon sorunu var
    • Yeni bir SOTA görsel model gelirse kalitenin büyük ölçüde artması bekleniyor
  • Bilimsel makalelerde meta'nın nougat modeli en uygun seçenek

    • Faturalar ve kayıtlar için donut modeli daha iyi
    • Her iki model de bazı durumlarda başarısız olabiliyor ve sorunları çözmek için LLM kullanmak gerekiyor
    • OCR sürecinde ayrıntılar kaybolduğu için tabloları ve grafikleri doğru işlemek zor
    • Google Gemini görüntüler için fine-tuning sunuyor, ama bunu denememiş
    • Birkaç-shot prompt, LLM halüsinasyonlarını önlemeye ve istenen formata uymasına yardımcı oluyor
  • Geçmişte denendiğinde, vakaların %90'ında iyi çalıştı

    • Kira sözleşmeleri gibi belgelerde sayılar ve isimlerde (kişi veya yer adları/adresler) zorluk yaşanıyor
    • LLM'nin tam kira bedelini ya da belirli bir kişinin adını doğru bilmesi mümkün değil
  • PDF sayfalarını PNG'ye dönüştürüp gpt4'ten görüntüyü yazıya dökmesini istemek çok doğru sonuç veriyor

    • Tesseract veya klasik OCR'den daha doğru
  • 10 yıl önce Tesseract ile Çince OCR denemesi yapılmış

    • İngilizce metni tanıyıp sonra temizlemek kolay
    • Çince'de tek bir karakter yanlış tanınırsa hatayı tespit etmek zorlaşıyor
    • ImageMagick ile görüntü dönüştürülüp Tesseract'a gönderilmiş, ardından tanınan cümlelerin istatistiksel sıklığına göre kazanan oylanmış
    • Doğruluk önemli ölçüde artmış
  • PaddlePaddle ile daha iyi sonuç alınmış

    • PPOCRv3 kullanılarak kitapları kelime düzeyinde kesen bir Python implementasyonu yazılmış
    • PPOCRv4'te piksel boyutu sınırı yok, bu yüzden "doğrudan kullanılabiliyor"
    • PPOCRv3 detection modeli daha iyi çalışmış
  • Başka OCR paketlerinin denenip denenmediği soruluyor

    • Tesseract'ın "77"yi "7" olarak okuması sorunu yaşanmış
  • Modelin daha net anlaması için prompt'u ayarlamak önemli

    • LLM ve belgeler üzerine çok düşünülüyor
    • OCR'nin yakında tamamen çözülecek bir problem olduğu düşünülüyor
    • Karmaşık belgelerdeki belirsizlikleri ve ayrıntıları yapay zeka modellerine etkili biçimde anlatmak asıl zorluk
  • Rubric'ler ve öğrenci teslimlerini parse etmeye yönelik benzer bir iş yapılıyor

    • GPT-4V ile entegrasyona ilgi var
    • E-posta ile iletişim isteniyor
  • OCR hatalarını düzeltmek için "fix this text" prompt'unu kullanma yaklaşımı soruluyor

    • Sohbet modeli yerine completion modeli kullanıp girdiyi token bazında vererek sonraki token olasılıklarını alma yöntemi öneriliyor
    • Bunun halüsinasyonları büyük ölçüde azaltabileceği düşünülüyor