Lajme

PDF që përshtatet sipas lexuesit

Formati PDF është kryesisht vizual; ai përmban udhëzime se ku të vizatohet çdo glif në faqe. Specifikimi i PDF-së mbulon edhe “Tagged PDF”, një pemë strukture që shënon titujt, paragrafët dhe listat, e cila përdoret në disa fusha si kërkesat e qasjes për institucione shtetërore apo në zinxhirë botues korporativë. Në praktikë, shumica e PDF‑ve që hasim janë pa etiketë – LaTeX, funksioni “Print to PDF” i Chrome‑s, apo shumica e mjeteve të eksportimit nuk prodhojnë etiketë, kështu që përmbajtja e tyre përbëhet vetëm nga koordinatat dhe madhësitë e shkronjave. Ekstraktorët e tekstit përpiqen të lexojnë urdhërat e vizatimit nga majtas në djathtë, nga krye poshtë, dhe shpesh përfundojnë me rezultate të pasakta.

Kjo nuk ishte problem kur lexuesit ishin vetëm njerëz, por sot PDF‑të shpesh përpunohen nga modelet e gjuhës së madhe (LLM), si ChatGPT apo Claude. Kur i ngarkojmë këto skedarë në një LLM, modeli duhet të “gjejë” strukturën e duhur nga një format që në vetvete nuk e ka. Për shembull, një frazë si “Project Alpha\nLed a team of 5 engineers\nto deliver the” kërkon që modeli të kuptojë se “Project Alpha” është titulli dhe se fjalia vazhdon pas rreshtit të dytë. Ndonjëherë rezultati është i saktë, por shpesh modeli bën gabime.

Zgjidhja që po eksplorojmë bazohet në një veçori të specifikimit të PDF-së që ekziston që nga PDF 1.4 (2001) – mundësia për të përcaktuar tekst zëvendësues për përmbajtje të shënuar. Renderuesit e PDF-së e injorojnë këtë tekst dhe vizatojnë asgjë tjetër, ndërsa ekstraktorët që e mbështetin këtë veçori kthejnë tekstin zëvendësues në vend të atij vizual. Në testet e mia, PyMuPDF dhe Poppler e njohin këtë veçori, edhe pse mbulimi i saj ndryshon në varësi të mjetit dhe versionit. Fillimisht e krijuar për ligaturat dhe karaktere që nuk përkthehen lehtë në Unicode, tani e përdorim në nivel dokumenti: shtojmë tekst zëvendësues në rrjedhën e përmbajtjes përmes sekuencave “marked‑content”, dhe ekstraktorët që e mbështesin kthejnë markdown të strukturuar në vend të tekstit të thjeshtë.

Rezultati është një PDF i vetëm, i cili duket krejtësisht i njëjtë për përdoruesin njerëzor – fontet, hapësirat dhe paraqitja janë të pandryshuara – por që, kur lexuar nga një mjet automat, prodhon markdown me tituj, lista dhe tabela të formatuara saktë. Në krahasim, metoda tradicionale jep një tekst pa hierarki, me rreshta të ndërprera në mes të fjalëve dhe pa dallim të qartë midis pikave dhe paragrafëve. Përgjithësisht, numri i tokenëve në LLM mbetet i ngjashëm, por secili token tani mbart informacion struktural, duke rritur densitetin e informacionit pa rritje të sasisë. Overhead‑i i madhësisë së skedarit është vetëm në shifra njëshe përqindjeje, dhe në disa raste madje bie poshtë falë optimizimeve të PyMuPDF-së.

Kur ngarkuam këto PDF‑ra “të zgjuara” në ChatGPT dhe Claude dhe u kërkuam të na japin tekstin e saktë, të dyja modelet kthejnë markdown me tituj (#, ##) dhe lista (-). Kjo përputhet me shtresën e brendshme të PDF‑s, duke treguar se mjetet e LLM‑ve mund të nxjerrin drejtpërdrejt strukturën e futur, pa nevojë për analizë të ndërlikuar të skemës. Në fund, kemi një dokument që përshtatet automatikisht sipas lexuesit: një version i vetëm, pa nevojë për kopje të veçanta apo konvertim shtesë, i cili ofron për përdoruesin njerëzor një PDF të rregullt dhe për makinat një markdown të pastër dhe të strukturuar.


Leave a Reply

Your email address will not be published. Required fields are marked *