- 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
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.
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.
Bu kullanım senaryosunu da düşünüp düşünmediğinizi merak ediyorum.
Mevcut OCR sistemleriyle karşılaştırıldığında ne tür hatalar yaptığını bilmek isterim.
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.
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
İ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
Ü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.
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
convert -density 76 input.pdf output-%d.pnghttps://github.com/philips/paper-bidsheets
Flash ilginç; hangi LLM’leri test ettiğinizi de merak ediyorum
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
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
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
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
Uzaktan bakınca okumak daha kolay
Genetik algoritmayı kullanma biçimi epey hoş. Kodu ya da en azından ödül fonksiyonunu görmek isterdim
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
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ü