Podręcznik uczestnika z objaśnieniami, przykładami i ćwiczeniami do samodzielnej nauki do Modułu 2
3. Wczytywanie treści z różnych formatów
Wczytanie pliku nie jest tym samym co poprawne odczytanie jego znaczenia. Program może zakończyć pracę bez błędu, a wynik nadal może mieć pomieszaną kolejność, pominięte zdanie albo elementy menu w środku instrukcji. Dlatego odczyt trzeba porównać z oryginałem.
1. Cztery formaty, różne pułapki
TXT przechowuje tekst bez rozbudowanego układu. Trzeba poprawnie rozpoznać kodowanie i zachować znaki oraz istotne przejścia do nowego wiersza. Markdown dodaje oznaczenia nagłówków, list i bloków kodu. Usunięcie wszystkich znaków #, - i wcięć bez rozpoznania ich roli może zniszczyć strukturę lub treść polecenia.
PDF opisuje wygląd stron. Tekst widoczny dla człowieka może zostać wyodrębniony w innej kolejności, z nagłówkami i stopkami albo ze słowami podzielonymi na końcu wiersza. Skan strony może nie mieć warstwy tekstowej. Pusty wynik ekstrakcji nie dowodzi wówczas, że dokument jest pusty; oznacza potrzebę rozpoznania typu PDF i ewentualnego OCR, a potem kontroli jego wyniku.
HTML zawiera treść oraz strukturę strony. Nawigacja, stopka i skrypty nie powinny automatycznie stać się wiedzą asystenta. W kontrolowanym przykładzie treść znajduje się w elemencie main. Na innej stronie należałoby sprawdzić jej rzeczywistą budowę, a nie zakładać, że ten sam wybór zawsze wystarczy.
| Format | Co chcemy zachować | Co sprawdzamy w pierwszej kolejności |
|---|---|---|
| TXT | Zdania, komendy i kolejność kroków | Polskie litery, końce wierszy |
| MD | Nagłówki, listy, kod i treść | Granice sekcji i dosłowne znaki |
| Treść oraz rzeczywisty numer strony | Kolejność, tabele, dzielenie słów, brak tekstu | |
| HTML | Główną treść z nagłówkami | Menu, stopkę, skrypty i granice akapitów |
2. Zapisuj odczyt jako osobny etap
Po ekstrakcji zachowujemy tekst surowy (raw_text), identyfikator dokumentu, identyfikator rekordu i lokalizator. W naszym zestawie TXT, MD i HTML dają po jednym rekordzie, a PDF dwa — po jednym na stronę. Cztery wybrane pliki dają więc pięć rekordów. Liczba dokumentów, rekordów i późniejszych fragmentów nie musi być taka sama.
Numer strony powinien wskazywać rzeczywistą stronę PDF liczoną od 1. Dla TXT, MD i HTML nie przypisujemy stron udających paginację: wpisujemy null. Sekcja dokumentu może pomóc w odnalezieniu treści, lecz nie staje się z tego powodu stroną PDF. Surowy tekst przechowujemy przed czyszczeniem, aby móc porównać efekt kolejnych operacji.
3. Przykład HTML: widok strony a wiedza
W pomoc.html występują następujące elementy. Cytaty poniżej dostarczają wszystkich danych potrzebnych do ćwiczenia.
Nawigacja: Start | Kontakt | Następna strona.
Treść główna — sekcja „Błąd połączenia”:
Gdy aplikacja zgłasza brak połączenia, sprawdź stan usługi i adres w konfiguracji. Jeżeli usługa działa, zapisz dokładny komunikat i przekaż go administratorowi. Nie zmieniaj uprawnień plików bez ustalenia przyczyny.
Treść główna — sekcja „Kontrola znaków”:
Tekst kontrolny: Zażółć gęślą jaźń. Zachowaj nazwy docassist-api i --no-pager oraz jednostki: 25°C, ±5%, ≤10 ms.
Stopka: Stopka techniczna strony. Skrypt: const
menu='Nawigacja';
Dobry odczyt zachowuje oba nagłówki i oba akapity treści głównej. Menu, stopka techniczna i kod skryptu są w tym przykładzie elementami otoczenia strony. Usunięcie tagów przez proste sklejenie tekstu bez separatorów mogłoby połączyć koniec nagłówka z początkiem zdania. Po odczycie sprawdzamy zatem także granice tekstu.
4. Przykład PDF: wynik wymaga porównania
W dwustronicowym docassist.pdf strona 1 opisuje wymagania stanowiska: minimum 8 GB RAM i 2 GB wolnego miejsca. Strona 2 omawia diagnostykę, w tym timeout_seconds o wartości 30 s. To parametry fikcyjnej aplikacji, nie zalecenia sprzętowe dla lokalnego modelu językowego ani gwarantowany czas obsługi zgłoszenia.
Na stronach występuje powtarzany nagłówek „Dokumentacja techniczna DocAssist | materiał ćwiczeniowy” i stopka „Strona 1 z 2” lub „Strona 2 z 2”. W tekście strony 1 występuje również podział konfigu- na końcu wiersza i racji na początku następnego. Odczyt może poprawnie zachować wszystkie te znaki, mimo że później część z nich trzeba będzie świadomie oczyścić.
Rozpoznaj etap błędu. Jeżeli odczyt nie zawiera zdania widocznego w oryginale, najpierw napraw ekstrakcję. Jeżeli je zawiera, ale razem ze stopką, rozważ regułę czyszczenia. Czyszczenie nie odzyska treści, której nigdy nie odczytano.
5. Ćwiczenie 2 — oceń odczyt
Dla sekcji „Błąd połączenia” porównaj dwa wyniki z oryginałem przytoczonym wyżej:
Wynik A: „Start | Kontakt | Następna strona. Gdy aplikacja zgłasza brak połączenia, sprawdź stan usługi i adres w konfiguracji. Jeżeli usługa działa, zapisz dokładny komunikat i przekaż go administratorowi. Nie zmieniaj uprawnień plików bez ustalenia przyczyny. Stopka techniczna strony”.
Wynik B: „Gdy aplikacja zgłasza brak połączenia, sprawdź stan usługi i adres w konfiguracji. Jeżeli usługa działa, zmień uprawnienia plików”.
- Wskaż szum w A. Czy zasadnicza treść sekcji została zachowana?
- Opisz zmianę znaczenia i brakującą treść w B. Czy samo usunięcie szumu naprawi ten wynik?
- Zapisz oczekiwany zestaw lokalizatorów dla odczytu czterech aktywnych plików, gdy PDF dzielimy na strony. Ile rekordów powstanie?
- Co należy zrobić, gdy skan PDF daje pusty tekst? Czy można go od razu oznaczyć jako poprawnie przetworzony?
- Wybierz cztery ciągi z sekcji „Kontrola znaków”, które wykorzystasz do sprawdzenia odczytu znaków i jednostek.
Wynik: krótka ocena dwóch odczytów oraz plan kontroli formatów i lokalizatorów.
Sprawdź rozumienie
Dlaczego brak wyjątku programu nie wystarcza do uznania odczytu za poprawny? Czy stronę 2 PDF można zastąpić drugim akapitem TXT? Co zyskujesz, zachowując tekst surowy przed czyszczeniem?
Przejście do praktyki: R2 tworzy documents_extracted.json i kontrola_odczytu.json. Wątpliwości o utraconej treści rozstrzygnij przed R3.
Przygotowanie dokumentów i bazy wiedzy
ENHANCER+ · Politechnika Warszawska · materiał do samodzielnej nauki offline