Ragable

← Wszystkie artykuły

Jak zamienić PDF-y, skany i arkusze w tekst, który bot potrafi przeszukać

5 min czytania
Jak zamienić PDF-y, skany i arkusze w tekst, który bot potrafi przeszukać

Najtrudniejszy w asystencie od dokumentów rzadko jest model. Trudna jest sterta plików, które ma przeczytać. W jednej bazie wiedzy zwykle mieszają się PDF-y od razu cyfrowe, zdjęcia papieru z telefonu, umowy wyeksportowane z narzędzia do podpisów i arkusze, których nikt nigdy nie opisał. Jakość wyszukiwania rozstrzyga się na etapie wczytywania. Czego ekstraktor nie wyciągnie, tego asystent nigdy nie zacytuje. Poniżej decyzje, które podejmujemy, budując taki pipeline dla klienta, w chmurze albo w całości na jego własnym sprzęcie.

Ustal, jaki plik naprawdę trzymasz w ręku

Trzy rodziny, trzy zachowania: PDF-y z warstwą tekstową, skany będące wyłącznie obrazem, ustrukturyzowane pliki tabelaryczne. PDF to pojemnik, nie format, więc pod tym samym rozszerzeniem może kryć się czysty tekst, kserokopia albo jedno i drugie na przemian. Widziałem jedną 200-stronicową umowę, która przełączała się między tymi dwoma czterokrotnie. Tania selekcja przed ekstrakcją bije puszczanie OCR-u na wszystkim.

  1. Liczba możliwych do wyciągnięcia znaków na stronę
  2. Stosunek powierzchni tekstu do obrazu
  3. Obrót strony
  4. Wykrycie języka
  5. Flaga strony skanowanej

Wskazówka: zapisz decyzję o ścieżce przetwarzania obok dokumentu, żeby móc przepuścić ponownie tylko te pliki, które poszły złą drogą.

Jak wyciągnąć czysty tekst z PDF-ów

Układ strony niesie znaczenie. Teksty dwułamowe, przypisy i żywe paginy rozsypują kolejność czytania, jeśli wyciągniesz je naiwnie. Powtarzalne nagłówki, stopki i numery stron zaśmiecają chunki i rozmywają embeddingi, więc usuwaj je na podstawie częstotliwości występowania na stronach. Zostaw to, na czym opiera się czytelnik: nagłówki, numery sekcji, znaczniki list i odwołanie do strony używane przy cytowaniu. I pilnuj drobiazgów. Ligatury, miękkie łączniki i dzielenie wyrazów na końcu wiersza po cichu psują wyszukiwanie po słowach kluczowych - nikt tego nie zauważa, dopóki szukanie słowa, które wyraźnie widać na stronie, nie zwróci pustki. Zachowaj powiązanie wyciągniętego tekstu ze stroną i współrzędnymi, a odpowiedź wskaże wprost swoje źródło.

Skany i OCR: tu wygrywa się albo przegrywa dokładność

OCR to przede wszystkim problem obróbki wstępnej: wyprostowanie przekrzywienia, odszumienie, korekta obrotu, ratowanie kserokopii o słabym kontraście. Pismo odręczne, pieczątki, podpisy i tabele w treści wymagają innego traktowania niż zwykły tekst. Ustawienia języka też mają znaczenie, bo zły model po cichu kaleczy polskie, niemieckie czy nordyckie znaki diakrytyczne. Po cichu jest tu słowem kluczowym - nie zgłasza błędu, po prostu daje słowa, które prawie istnieją.

  • Poziom pewności dla każdej strony
  • Trafność słownikowa i udział tokenów niebędących słowami
  • Wykrywanie pustych stron
  • Próbka do ręcznego sprawdzenia

Strony o niskiej pewności oznaczaj do przeglądu przez człowieka, zamiast pozwalać asystentowi odpowiadać ze śmieci. A skoro OCR jest zdecydowanie najcięższym krokiem, to on decyduje o doborze sprzętu przy wdrożeniach on-premise.

Arkusze to nie dokumenty

Wrzucenie arkusza jako CSV do modelu embeddingów wyrzuca do kosza to, co czyniło go użytecznym: relacje między wierszami a kolumnami. Scalone komórki, wielowierszowe nagłówki, ukryte kolumny, formuły kontra zapamiętane wartości, pięć arkuszy w jednym skoroszycie. Wszystko to komplikuje robotę. Działają dwie strategie. Zamienić każdy wiersz w samoopisujące się zdanie z nazwami kolumn albo utrzymać tabelę w formie ustrukturyzowanej i odpowiadać na jej podstawie generowanymi zapytaniami. Do wyszukiwania opisowego nadaje się serializacja. Sumy, zliczenia i porównania wymagają prawdziwego wykonania zapytania, nie wyszukiwania - żaden model embeddingów nie doda ci kolumny. Jednostki, waluty i formaty dat prowadź jawnie.

Chunking i metadane, dzięki którym wyszukiwanie działa

Tnij na chunki według struktury, nie według stałej liczby znaków. Granice sekcji i nagłówków za każdym razem biją dowolne okna. Zakładka między chunkami pomaga zachować ciągłość, ale rozdmuchuje indeks, więc dobierz ją do prawdziwych pytań klientów, a nie do tego, co akurat było ustawieniem domyślnym. Każdy chunk powinien nieść plik źródłowy, stronę albo arkusz, nagłówek sekcji, datę dokumentu, wersję i grupę dostępu. Kontrolę dostępu wpisz do indeksu od pierwszego dnia; filtrowanie po wygenerowaniu odpowiedzi przychodzi stanowczo za późno. Wskazówka: zanim zaczniesz cokolwiek stroić, zbuduj mały zestaw ewaluacyjny z prawdziwych pytań i znanych miejsc, gdzie leżą odpowiedzi, bo inaczej zmiany w chunkingu są zgadywanką. Stabilny identyfikator chunka pozwala odpowiedziom wskazać dokładne pochodzenie.

Pipeline na produkcji

Wczytywanie dokumentów to zadanie cykliczne, nie jednorazowy import. Dokumenty są wymieniane, zastępowane nowszymi, kasowane. Wykrywaj zmiany po skrócie treści, przetwarzaj ponownie tylko to, co się ruszyło, i usuwaj nieaktualne chunki, żeby asystent przestał cytować wycofane wersje. Loguj każdy etap - wtedy złą odpowiedź da się cofnąć do ekstrakcji, która ją spowodowała. W chmurze czy on-premise pipeline pozostaje ten sam; zmienia się to, gdzie działa OCR i embedding oraz co wychodzi poza sieć. Przewidź uszkodzone pliki, PDF-y zabezpieczone hasłem i przerośnięte skoroszyty, a potem pokaż je komuś, zamiast po cichu pomijać. Ciche pominięcia to sposób, w jaki w korpusie robi się dziura, której nikt nie znajduje przez pół roku.

FAQ

Czy potrzebujemy OCR, skoro nasze PDF-y powstały na komputerze?

Zwykle tak. Archiwa z czasem się rozjeżdżają, a pliki cyfrowe często zawierają zeskanowane załączniki, podpisane strony albo faksowane aneksy. Selekcja rozstrzyga per strona, nie per plik, więc OCR dostają tylko te strony, które go potrzebują.

Skąd wiemy, że ekstrakcja była wystarczająco dobra?

Połącz sygnały pewności z próbkowaniem, a potem zmierz to na zestawie ewaluacyjnym z prawdziwych pytań, dla których znasz już poprawne źródła. Jeśli wyszukiwanie nie potrafi znaleźć fragmentu, który widzisz na własne oczy, podejrzanym jest ekstrakcja.

Czy da się to uruchomić bez wysyłania dokumentów do zewnętrznego dostawcy?

Tak. Zarówno OCR, jak i modele embeddingów działają lokalnie, więc korpus zostaje w sieci. Kosztem jest sprzęt: dobierasz GPU i przestrzeń pod szczyt wczytywania, a przepustowość staje się czymś, co planujesz, a nie kupujesz.

Co z tego wynika

Jakość wczytywania wyznacza sufit dla wszystkiego, co asystent robi później. Kieruj pliki według tego, czym naprawdę są, zachowuj strukturę i pochodzenie, traktuj arkusze jak dane, a nie jak prozę. Zestaw ewaluacyjny zbuduj wcześnie i przepuszczaj go po każdej zmianie w pipelinie. Zacznij od typów dokumentów, w których siedzą pytania faktycznie zadawane przez ludzi, a korpus poszerzaj dopiero wtedy, gdy te odpowiedzi się bronią.

Zbuduj asystenta AI na własnych dokumentach

Ragable indeksuje Twoje pliki i odpowiada na ich podstawie, z odnośnikami do źródeł. Zacznij w SaaS albo postaw na własnej infrastrukturze.

Zacznij od 99 USD miesięcznie