3 puan yazan GN⁺ 2024-11-17 | 1 yorum | WhatsApp'ta paylaş
  • Belge görsellerini metne aktardıktan sonra yeniden düzenleme işini yapılandırılmış Markdown dönüşümüne indirgeyen bir web aracı
  • Web girişi şu anda ağırlıklı olarak görsel yükleme üzerine kurulu; PDF desteğinin yakında sunulacağı belirtiliyor
  • Servis, npm paketi llama-ocr ve Together AI temelinde çalışıyor
  • JavaScript’te ocr fonksiyonuna filePath ve TOGETHER_API_KEY verilerek Markdown çıktısı alınabiliyor
  • Hem web üzerinden yüklemeyi hem de koddan çağırmayı desteklediği için belge görseli dönüşümü, manuel iş akışlarına ya da geliştirme süreçlerine uygun şekilde denenebiliyor

Görsel belgeleri Markdown’a dönüştürme

  • LlamaOCR.com, yüklenen belgeleri Markdown’a çeviren bir araç
  • Web sayfası “Upload an image to turn it into structured markdown” ifadesiyle, görsel yükleyerek yapılandırılmış Markdown oluşturduğunu belirtiyor
  • PDF desteği “soon” olarak gösteriliyor; bu nedenle şu anki kapsam ağırlıklı olarak görsellerle sınırlı

Kodda kullanım yöntemi

  • npm paketi llama-ocr kullanılarak JavaScript kodu içinde OCR çalıştırılabiliyor
import { ocr } from 'llama-ocr';

const markdown = await ocr({
  filePath: './trader-receipt.jpg',
  apiKey: process.env.TOGETHER_API_KEY
});
  • Örnekte filePath alanına görsel dosya yolu giriliyor, apiKey alanına ise TOGETHER_API_KEY ortam değişkeni aktarılıyor
  • Servis llama-ocr ve Together AI üzerine kurulu

1 yorum

 
GN⁺ 2024-11-17
Hacker News yorumları
  • llama-ocr’ı yapan kişiyim. Paylaşım ve güzel tepkiler için teşekkürler. Basit bir OCR API’sine ihtiyacım olduğu için bu haftanın başında yaptım; Together.ai üzerinde barındırılan Llama 3.2 Vision ile görüntüleri yapılandırılmış Markdown’a ayrıştırıyor.
    npm paketi olarak da sunuluyor. PDF ayrıştırma, JSON yanıtı gibi özellikler de eklemeyi planlıyorum; sorularınız varsa yanıtlamaya çalışırım.

    • İçinde aynı kalemden 3 tane bulunan bir fatura verdim; normalde olduğu gibi 3 madde işareti olarak çıkarmak yerine, orijinal kâğıtta olmayan bir quantity sütunu içeren bir tablo oluşturdu.
      Bu ölçekte büyük bir dönüşümün beklenen ya da istenen davranış olup olmadığını merak ediyorum. Çıktının bazen madde işaretli liste, bazen tablo olması sonraki otomatik işlemeyi biraz daha zorlaştırıyor.
    • Poster PDF’lerinden bilimsel içerik çıkarmakta zorlanmıştım; örneğin Nougat, düzen değiştiğinde çoğu zaman dağılıyordu.
      Bu kullanım senaryosunu da düşünüp düşünmediğinizi merak ediyorum.
    • “Need an example image? Try ours.” iyi bir fikir. Daha fazla servisin benzer bir özellik sunması güzel olurdu.
    • Doğruluğunun ne düzeyde olduğunu merak ediyorum.
      Mevcut OCR sistemleriyle karşılaştırıldığında ne tür hatalar yaptığını bilmek isterim.
    • Yerel LLM kullanma seçeneğinin de mümkün olup olmayacağını merak ediyorum.
  • Bu, görüntüyü Llama 3.2 Vision’a gönderip metni okumasını istemekten ibaret.
    Diğer LLM çıktıları gibi halüsinasyona açık. Çünkü piksellerden harf şekillerini okumuyor; eğitimde gördüğü görüntü ve altyazılara dayanarak resmi tarif ederken metin hakkında çıkarım yapıyor. Özellikle okunması zorsa kelimeleri tamamen uydurabilir.

    • Diğer OCR sistemlerinde de aynı şey vardı; sadece bu bağlamda bu tür hatalara halüsinasyon denmiyordu.
  • Harika görünüyor. Son zamanlarda çok OCR işi yapıyorum, bu alana yeni bir aracın gelmesine sevindim. PDF→Markdown alanındaki mevcut güçlü oyuncu muhtemelen Facebook’un Nougat’ı[1]; bunu DSPy’ye bağlayıp felsefe kitaplarında hangisinin daha iyi olduğunu karşılaştırmak istiyorum.
    Bu deponun bağlantı verdiği girişimin Zerox[2] projesi de iyi görünüyor; en azından tanıtımı Nougat’tan çok daha pürüzsüz. Gerçek bir uzman buralardan geçerse düzeltme ya da tavsiye duymak isterim.
    Merak ettiğim iki şey var. 1) Together.ai nedir ve bu model açık kaynak mı merak ediyorum. Web sitesi bir barındırma servisi gibi görünüyor; “Custom Models” sayfası[3] ise kendi kapalı modellerini eğitmekten çok özel ince ayara daha yakın duruyor. HuggingFace profilleri var gibi görünüyor ama gerçekten onlara mı ait, belirsiz: https://huggingface.co/TogetherAI
    2) GitHub’da “hosted demo” yazıyor, ancak barındırılan kısım yalnızca küçük ve temiz bir WebGUI gibi görünüyor. Bu, bu işlevin şimdi de gelecekte de yalnızca API çağrısıyla kullanılabileceği anlamına mı geliyor, merak ediyorum.
    Not: Masaüstü tarayıcıda header bağlantısı bozuk ve onClick tetiklenmiyor.
    [1] https://facebookresearch.github.io/nougat/
    [2] https://github.com/getomni-ai/zerox
    [3] https://www.together.ai/products#custom-models

    • Projenin yazarı Together.ai DevRel. Yine de geliştirici araçlarını tanıtma biçimi olarak harika.
    • together.ai’nin demoya en azından kısmen sponsor olduğunu düşünüyorum.
    • Gizlilik ve maliyet nedeniyle kendi kendine barındırılabilen bir şey bekliyordum.
    • together.ai, multimodal Llama 3.2 dahil 100’den fazla açık kaynak modeli OpenAI uyumlu API ile sunuyor.
  • İlginç bir durum vardı. Örnek olarak bir web çizgi romanı yükledim; tüm diyaloglar büyük harfliydi ama çıktı paneller arasında tutarsız biçimde cümle tipi büyük/küçük harf ve başlık tipi büyük/küçük harf kullanımını karıştırdı.
    OCR’ı gerçekten kullanmak istediğim bir problemi de denedim. Dijitalleştirilmesi gereken eski slaytlarım var ve çoğunda etiket bulunuyor; birini yüklediğimde bunun bir slayt ya da film karesi fotoğrafı gibi göründüğünü, eski olduğu için sararıp solduğunu, ortasında koyu renkli dikdörtgen bir kesit olduğunu, metnin “Once Upon a Time”, sayının ise “1069” olduğunu söyledi.
    Gereksiz derecede tekrarlayan slayt açıklaması da sorun ama gerçek yazı el yazısı bile değildi ve “Once Uniquitous.” yazıyordu; sayı da 106g idi. ‘9’ değil, çok net bir ‘g’ idi.
    İlginç olan, bunun model önyargısına bir örnek olabilecek olması. Slaydı fazla antika gibi gördüğü için tamamen klişe bir başlık halüsinasyonu yaptı; siyah dikdörtgen ise şeffaf kısım görünmesin diye önden ışık tutulmasının sonucuydu, bunu kaçırdı.
    Ayrıca API’nin kendisinde belgelenmemiş dosya boyutu veya çözünürlük sınırları var gibi görünüyor.

  • Yakın zamanda bir hayır müzayedesi için kâğıt teklif formlarını işlemek üzere llama3.2-vision kullandım; oldukça kötü el yazılarında bile epey isabetliydi. Gelecek yılki etkinlikte de kullanmak istiyorum.
    Ancak tutarlı şekilde CSV çıktısı aldırmanın zor olması epey sinir bozucu. ChatGPT ve Gemini bu konuda daha iyi görünüyor, ama otomasyona kadar denemedim.
    Ölçek yaklaşık 100 sayfalık teklif formu olduğu için bir miktar elle temizlik kabul edilebilir. Gönüllülerin zamanını harcamaktan kesinlikle daha iyi.
    https://github.com/philips/paper-bidsheets

    • Bu işte Handwriting OCR’ın (https://www.handwritingocr.com) ne kadar karşılaştırılabilir olduğunu duymak isterim.
      Ücretsiz değil, ama el yazılı belge doğruluğu üst seviyede. Kurucusu olduğum için önyargılıyım, ancak mevcut doğruluk seviyesi gerçekten umut verici. 100 sayfalık bir proje için yalnızca 12 dolar tutar ve zaman kazandırabilir.
    • OCR kısmını llama3.2-vision’a bırakıp CSV dönüşümünü ChatGPT’ye devretmek nasıl olur diye düşünüyorum.
  • Son dönemde çok OCR yaptım; çoğunlukla aile fotoğraflarındaki metinleri dijitalleştirme işiydi. Genel OCR modelleri berbattı, LLM’ler çok daha iyi yaptı. Test ettiğim modeller arasında Gemini Flash açık ara en iyisiydi ama yine de yeterince çok hata ve halüsinasyon vardı; elle yazmak daha hızlıydı
    Neredeyse olacakmış gibi hissettirip olmaması sinir bozucu. Bu araç daha kötü görünüyor. Bazen yalnızca metni yanıtlıyor, bazen de “The image is a scanned document with handwritten text...” gibi genel bir açıklama döndürüyor. Gemini Flash’ı geçmesini sağlayacak bir ince ayar falan vardır diye ummuştum; öyle olsaydı bana çok zaman kazandırırdı, yazık

    • Görüntüyü downscale etmeyi deneyip denemediğinizi merak ediyorum. Daha düşük çözünürlüklü görüntülerde daha iyi sonuçlar almaya başladım. Telefon kamerasıyla oluşturulmuş taramaları kullandım
      convert -density 76 input.pdf output-%d.png
      https://github.com/philips/paper-bidsheets
    • Genel modeller açısından açık kaynak OCR’ın durumu epey kötü. Ne yazık ki Microsoft, Google gibi kapalı seçenekler çok daha iyi. Onları da deneyip denemediğinizi merak ediyorum
      Flash ilginç; hangi LLM’leri test ettiğinizi de merak ediyorum
    • Yakın zamanda gpt-4o ile bir görüntü derlemi üzerinde OCR çalıştırdım ve oldukça iyi sonuçlar aldım. Çıkardığım en önemli ders, gösterişli bir LLM kullansanız bile sıradan veri hazırlığının hâlâ önemli olduğu
      Görüntüyü yalnızca metin kısmı kalacak şekilde kırpmak, kenarlıkları çıkarmak ve kontrastı artırmak inanılmaz yardımcı oldu. 2015’te yazdığım bir yazı ama GPT için de hâlâ çok geçerli: https://www.danvk.org/2015/01/07/finding-blocks-of-text-in-a...
      GPT’ye tek seferde tüm sayfayı vermektense birkaç paragraf ya da daha azını vermek daha iyi oldu. Metin ne kadar kısa olursa halüsinasyon ihtimali o kadar azalıyor
    • Ben de şu anda tam olarak aynı şeyi yapmaya çalıştığım için üzüldüm. Aile fotoğraflarını dijitalleştiriyorum ve bazılarının arkasında Almanca yazılar var
      Son dönemde gündem olan OCR berbattı; bunun daha iyi olmasını umuyordum. Tek tek görüntüleri sohbete yapıştırınca ChatGPT 4o iyiydi ama API’yi henüz denemedim. 6500 fotoğrafı işlemenin maliyeti ne olur bilmiyorum; aralarında boş fotoğraf da çok, ama onları kolayca elemenin bir yolu da yok
    • Claude’u deneyip denemediğinizi merak ediyorum
      Metin konumlarını döndürmede hâlâ iyi değil ama benim test ettiğim kadarıyla OCR performansı müthişti
  • Bunun “Show HN” gönderisi olup olmaması gerektiğinden emin değilim. Sadece bir frontend gibi görünüyor ve adındaki Llama ile doğrudan ilişkilendirilebilecek bir taraf da yok gibi. together.ai bulut alanı sağlamış olabilir

  • Genetik algoritmayla 500 daire yerleştirerek bir cümle oluşturdum ve fiziksel dairelerle çizilmiş cümleyi denedim
    https://www.instagram.com/marekgibney/p/BiFNyYBhvGr/
    İlginç şekilde daireleri iyi tanıyor ama cümleyi görmüyor. “Görüntüde Markdown olarak ifade edilebilecek metin ya da öğe yok; yalnızca dairelerden oluşan görsel bir kompozisyon ve Markdown’a çevrilecek bilgi bulunmuyor” gibi bir yanıt verdi

    • Gözleri kısınca okunabildiği fikrinden yola çıkarak görüntüye Gauss bulanıklığı uyguladım; bulanık metnin “STOP THINKING IN CIRCLES.” olarak okunduğu yanıtını aldım
      Yanıt deterministik olmadığı için orijinal görüntüyü de birkaç kez denedim ama bir kez bile başarılı olmadı. Buna karşılık uyguladığım tüm alçak geçiren filtre efektleri yüksek başarı oranıyla çalıştı
      https://imgur.com/q7Zd7fa
    • Ben de bunu okuyamıyorum
      Uzaktan bakınca okumak daha kolay
    • LLM’in bu tür orijinal materyal ile eğitilmiş olabileceğini pek sanmıyorum
      Genetik algoritmayı kullanma biçimi epey hoş. Kodu ya da en azından ödül fonksiyonunu görmek isterdim
    • Doğru cevabı görmeden önce ben de “stop” dışında hiçbir şey okuyamadım
    • Bunun neden ilginç olduğunu anlamıyorum. Görüntü hiçbir şeye benzemiyor; harfleri görmek için açıyı değiştirip bakmak gerekiyor, o da zar zor
  • Komikti. Uzun bir belgenin 3 ekran görüntüsünü verdim; nispeten iyi işledi ama düzeltme yaparken yapay zekanın özgün metinde olmayan bir paragraf uydurduğunu fark ettim
    Muhtemelen ekran görüntülerinin doğası gereği bazı cümleler ya da paragraflar ortadan kesilmişti ve bu da LLM’in boşluk doldurma eğilimini tetikledi. Bitmemiş paragrafı olduğu gibi bırakamadı; özgün belgede hiç olmayan kısa bir sonuç paragrafı bile ekledi

    • Bir şeyleri uydurma ihtimali azıcık bile olan bir teknolojinin gerçek dünyada kullanılmasının düşünülmesini anlayamıyorum
  • 1997 tarihli Asus P3B-F anakart şemasının eski bir taramasını verdim
    Başlık bloğundaki bazı metinleri, örneğin proje adı ve tarih gibi şeyleri çıkardı; yazı tipi belirgin olmasına rağmen 8/B ile 1/I’yi tamamen birbirine karıştırdı
    Gerçekten işe yarar bilgiler ise “Tables / Table 1: [Insert table 1 here] / Other Elements / [Insert other elements here]” gibi bir şeye dönüştü