« Tüm yayınlar

pdfmuse: Gerçek Verilerde Sınanan Deterministik PDF Ayrıştırıcı

pdfmuse deterministik PDF ayrıştırıcısı, gerçek özgeçmiş verilerinde %10 sessiz hata bulup form XObject işleme sorununu nasıl çözdü.

RAG hatlarında en kırılgan adım genelde PDF'den metne dönüştürmedir: aynı dosyanın iki farklı işlenişi bile farklı embedding'lere ve güvenilmez indekslere yol açabiliyor. pdfmuse, tek bir Rust çekirdeği üzerine kurulu, Python/Node/WASM bağlamalarının bayt bayt aynı çıktıyı ürettiği, ML tabanlı tahmin içermeyen bir PDF/DOCX ayrıştırıcı olarak tasarlandı. Ölçütlerde PyMuPDF'e göre ~7.7x, pdfplumber'a göre ~150x hız ve tam karakter kapsamı iddia ediyor.

Ancak asıl önemli kısım, geliştiricinin sentetik test paketiyle her şeyin yeşil göründüğü ama gerçek 80 özgeçmiş dosyasında ayrıştırıcının %10'unda sessizce boş belge ürettiğini keşfetmesi. Sorun, Canva gibi araçların metni form XObject içine yazması ve ayrıştırıcının Do operatörünü işlememesiydi; performans amaçlı bir lazy-loading optimizasyonu da bu XObject gövdelerini tamamen atlıyordu.

Düzeltme, yorumlayıcının form XObject'lere özyinelemeli olarak inmesiyle geldi ve sıfır karakter hatası 8/80'den 0/80'e indi. Ayrıca Python tarafında tüm ara temsilin JSON'a çözülmesinin hız kazanımını yediği ortaya çıktı; sadece metin isteyen kullanıcılar için doğrudan string dönüşü eklendi. Ders açık: sentetik test dosyalarında yeşil bir test paketi, gerçek dağılım hakkında hiçbir şey söylemiyor — herhangi bir ayrıştırıcıyı üretime almadan önce kendi korpusunuzda gölge karşılaştırma yapın.