Dlaczego naiwne parsowanie PDF niszczy systemy RAG?
Standardowe biblioteki (pypdf, pdfplumber) traktują PDF jako strumień tekstu, ignorując układ wizualny dokumentu. W efekcie:
- Tabele rozpadają się na losowe fragmenty tekstu — kolumny mieszają się z wierszami.
- Nagłówki gubią hierarchię — system nie wie, co jest tytułem sekcji, a co treścią.
- Stopki i watermarki zanieczyszczają chunki — numery stron trafiają do kontekstu jako „fakty”.
- Multi-kolumnowy layout miesza kolejność — tekst przeskakuje między kolumnami.
Badania pokazują, że w przypadku dokumentów zawierających tabele finansowe, precyzja odpowiedzi RAG spada poniżej 25% przy użyciu prostej ekstrakcji tekstu.
Porównanie rozwiązań: trzy podejścia do problemu
1. Unstructured.io — pipeline Open Source z wizją komputerową
Architektura: Wykorzystuje modele LayoutLMv3 i Table Transformer do rozpoznawania struktury przed ekstrakcją tekstu. Partycjonuje dokument na elementy semantyczne (Title, NarrativeText, Table, Image).
Kluczowe funkcje:
- Automatyczna detekcja typu elementu (nagłówek, tabela, lista).
- Konwersja tabel do HTML z zachowaniem struktury.
- Ekstrakcja obrazów z OCR dla skanów.
2. LlamaParse — SaaS od twórców LlamaIndex
Architektura: Zamknięte API wykorzystujące multimodalne LLM (np. GPT-4V) do „rozumienia” layoutu. Zwraca Markdown z zachowaną hierarchią.
Kluczowe funkcje:
- Natywna integracja z LlamaIndex.
- Obsługa skanów i PDF-ów z obrazami (OCR wbudowany).
- Streaming API dla dużych dokumentów.
3. IBM Docling — enterprise-grade parser z focus na compliance
Architektura: Open-source framework oparty na PyTorch, wykorzystujący detectron2 do segmentacji stron. Silna separacja między parsowaniem a ekstrakcją.
Kluczowe funkcje:
- Zachowanie metadanych dokumentu (autor, data).
- Detekcja redakcji i watermarków.
- Eksport do DocJSON — ustrukturyzowany format z pełną hierarchią.
Strategia implementacji: parent-child retrieval
Kluczem do precyzji jest strategia pobierania z kontekstem:
- Parent document — cały rozdział/sekcja jako kontekst wysokopoziomowy.
- Child chunks — małe fragmenty (tabela, akapit) do wyszukiwania.
- Metadata filtering — filtrowanie po typie elementu.
Porównanie w pigułce (Tabela)
| Kryterium | Unstructured.io | LlamaParse | IBM Docling |
|---|---|---|---|
| Licencja | Apache 2.0 | Proprietary SaaS | Apache 2.0 |
| Hosting | Self-hosted / API | SaaS only | Self-hosted |
| Najlepsze dla | Multi-format | Szybkie MVP | Regulated sectors |
Podsumowanie: Wiarygodność systemów RAG w 90% zależy od jakości ingestii danych. Inwestycja w inteligentne parsowanie PDF to fundamentalny warunek produkcyjnego wdrożenia AI.

Dodaj komentarz