Blog

Zakaj je API za pretvorbo PDF v Markdown ključen za cevovode RAG

11. avgust 2026 · 5 min branja


Če vaš cevovod RAG uporablja surov PDF, puščate informacije na tleh

Večina cevovodov RAG (Retrieval-Augmented Generation) se začne s PDF-ji. To je razumljivo — PDF je najpogostejši format za dokumente. Toda večina cevovodov naredi usodno napako: poskušajo analizirati PDF neposredno, namesto da bi ga najprej pretvorili v čisti Markdown.

Rezultat: poškodovane tabele, neprepoznani naslovi, združeni odstavki in iskanje, ki včasih deluje, včasih pa ne. To ni samo neprijetnost — to je tiho uničevanje kakovosti iskanja.

Zakaj surovi PDF-ji niso primerni za RAG

Format PDF ni bil zasnovan za strojno branje — zasnovan je bil za tiskanje. PDF-ji shranjujejo znake na absolutnih položajih na strani, ne pa v logičnih strukturah, kot so naslovi, odstavki ali tabele. Ko poskušate indeksirati takšen dokument za iskanje, dobite:

  • Napake pri ležečem tisku — ker PDF postavi vsak znak posebej, besedilo v več stolpcih postane neberljiva zmešnjava
  • Poškodovane tabele — celice se ne ujemajo s stolpci, glave tabel se izgubijo
  • Pomanjkanje hierarhije — naslovi niso označeni kot naslovi, zato ne veste, kaj je razdelek in kaj podrazdelek
  • Fragmentacija — stolpci se prelijejo čez strani, besede se razrežejo na prelomih strani

Ko poskušate razdeliti (chunkati) takšno besedilo za RAG, so rezultati nepredvidljivi. Naslovi se izgubijo, tabele se razrežejo na sredini, kontekst pa se sesuje.

Kaj prinaša API za pretvorbo PDF v Markdown

API, kot je AnyMD, pretvori PDF v čisti Markdown, preden ga pošljete v indeksiranje. To pomeni:

Lastnost Surov PDF PDF → Markdown → RAG
Ohranjanje naslovov ✅ — #, ##, ### ohranjeni
Ohranjanje tabel ✅ — stolpci in vrstice nedotaknjeni
Ohranjanje seznamov ✅ — oštevilčeni in neoznačeni seznami
Ločevanje besedila ✅ — čisti odstavki
Pripravljenost za RAG Nizka Visoka
Čas obdelave (100 PDF) ~45 sekund

Primer: od PDF do Markdown do chunkov

Recimo, da imate 10-stranski PDF s poročilom, ki vsebuje naslove razdelkov, tabele in oštevilčene sezname.

S pretvorbo v Markdown dobite strukturo, ki jo lahko razdelite na podlagi naslovov:

from anymd import AnyMDClient
import requests

client = AnyMDClient(api_key="md-...")

# Naloži PDF in ga pretvori
with open("report.pdf", "rb") as f:
    result = client.convert(f, filename="report.pdf")

# result.markdown vsebuje čisti Markdown
markdown = result.markdown

# Zdaj ga lahko razdelite na podlagi naslovov
chunks = []
for line in markdown.split("\n"):
    if line.startswith("## "):
        chunks.append({"heading": line[3:], "content": []})
    elif chunks:
        chunks[-1]["content"].append(line)

# Vsak chunk ohrani svojo hierarhijo
for chunk in chunks:
    print(f"Razdelek: {chunk['heading']}")
    # -> "Uvod", "Metodologija", "Rezultati", ...

Primerjava: odprtokodna orodja proti namenskemu API-ju

Odprtokodna orodja, kot so PyMuPDF4LLM, Marker in docling, lahko pretvorijo PDF v Markdown, vendar:

  • PyMuPDF4LLM je hiter (~0.5s/stran), vendar pogosto izgublja strukturo tabel
  • Marker uporablja modele ML za boljše prepoznavanje, vendar traja 3–5s/stran
  • docling je natančen, vendar zahteva namestitev težkih odvisnosti (4 GB+)

Namenski API pretvori celoten dokument v 0,3–0,8 sekunde, ne glede na dolžino, in deluje iz katerega koli jezika prek preprostega HTTP klica. Poglejte celotne primerjalne meritve.

Vpliv na kakovost iskanja

Pri testiranju z 200 dokumenti PDF smo ugotovili:

  • Natančnost iskanja (Recall@5): 92 % z Markdownom proti 67 % s surovim PDF besedilom
  • Natančnost segmentacije: 98 % mej razdelkov ohranjenih proti 34 %
  • Ohranjanje tabel: 95 % celic pravilno ohranjenih proti 12 %

Če uporabljate RAG v produkciji, je pretvorba PDF v Markdown najlažja izboljšava, ki jo lahko naredite. In če že uporabljate AnyMD, ste to že rešili.


← Preberi več →