EPUB na tekst: jak zamienić półkę książek w coś, na czym da się liczyć
Książki to najlepiej zredagowana długa proza, jaką mamy. Profesjonalnie napisane, profesjonalnie przejrzane przez korektę, tysiące słów spójnego głosu bez menu nawigacyjnych, banerów cookies czy sekcji komentarzy. Jako surowiec do wszystkiego, co ma kształt języka — embeddingi, analiza stylu, retrieval, trenowanie klasyfikatora rozpoznającego ton — trudno o coś lepszego.
Problem w tym, że to wszystko siedzi w spakowanej paczce plików XHTML. Konwerter EPUB na tekst to wyciąga: jeden ciągły strumień prozy, bez tagów, bez znaków formatowania, bez niczego, czego twój tokenizer musiałby się uczyć ignorować. Wgraj plik powyżej, a wynik wraca w sekundy. Za darmo, bez rejestracji, limit 50 MB, nic nie jest przechowywane.
Dlaczego płaski tekst to właściwy kształt dla tej roboty
Czysty tekst nie jest tu opcją budżetową. Dla większości rzeczy, które robi się z książką na skalę, to format, którego narzędzia faktycznie oczekują:
- Embeddingi i wyszukiwanie semantyczne. Potnij prozę na kawałki, osadź każdy, wyszukuj po podobieństwie. Kratki i gwiazdki Markdowna zajmują pozycje tokenów i nie wnoszą nic do znaczenia — rozcieńczają wektor. Czyste akapity wyszukują się lepiej, a każda biblioteka do chunkowania na świecie domyślnie bierze tekst.
- Czytelność i stylometria. Flesch-Kincaid, średnia długość zdania, stosunek typów do tokenów, bogactwo słownictwa, rytm interpunkcji. To miary na poziomie słów i zdań, a tokeny formatowania psują każdą z nich.
- Indeks wyszukiwania po całej bibliotece. Postgresowy
tsvector, SQLite FTS5, Elasticsearch albo zwykły katalog, po którym puszczaszgrep. Wszystkie chcą surowego tekstu w polu. Pięćdziesiąt przekonwertowanych książek to naprawdę szybka osobista wyszukiwarka. - Lingwistyka korpusowa i pipeline'y NLP. Konkordancje, analiza kolokacji, ekstrakcja encji nazwanych, modelowanie tematów. spaCy i NLTK biorą stringi, nie znaczniki.
- Text-to-speech i dostępność. Silnik TTS, któremu podasz Markdown, radośnie przeczyta na głos „kratka kratka Rozdział czwarty".
- Porównywanie wydań. Dwa nakłady tego samego tytułu, wyciągnięte do tekstu, przepuszczone przez diff na poziomie słów — tak się znajduje, co drugie wydanie naprawdę zmieniło.
Co tracisz przy spłaszczaniu
Granice rozdziałów. To jest prawdziwy koszt i przy książkach waży więcej niż przy większości typów dokumentów, bo książka jest na tyle długa, że „gdzie ja jestem" ma znaczenie.
W źródłowym EPUB-ie każdy rozdział to osobny plik XHTML z tagiem nagłówka i wpisem w dokumencie nawigacyjnym. Po spłaszczeniu tytuł rozdziału staje się krótką linią tekstu nad długą linią tekstu, bez niczego, co by ją wyróżniało. Poproś model o „streszczenie rozdziału siódmego", a będzie musiał wywnioskować z samych słów, gdzie siódmy się zaczyna. Zwykle mu się udaje. Czasem zaczyna akapit za późno i po cichu streszcza nie to, co trzeba.
Cytaty blokowe też przestają się wizualnie odróżniać od narracji, co ma znaczenie w literaturze faktu, gdzie cytowane źródła i własny wywód autora siedzą obok siebie. Jeśli cokolwiek z tego jest nośne dla twojego zastosowania, weź zamiast tego EPUB na Markdown — tam drzewo nagłówków przeżywa i możesz czysto pociąć plik po rozdziałach. Przełącznik formatu u góry tej strony przełącza między nimi i przenosi wybrany plik, więc możesz wygenerować oba wyniki i porównać bez wgrywania dwa razy.
Artefakty typografii, które warto posprzątać
Wydawcy składają tekst porządnie, co jest świetne do czytania i lekko wkurzające do obliczeń. Kilka rzeczy niezawodnie pojawia się w tekście wyciągniętym z książek, a jedno przejście znajdź-i-zamień załatwia większość z nich:
- Cudzysłowy typograficzne i apostrofy. Książki używają cudzysłowów
drukarskich, nie
"i'. Tokenizery zwykle sobie radzą, ale naiwny regeks i porównywanie stringów nie — poszukaj w powieści"tak", a możesz nie dostać nic, choć strona jest pełna „tak”. - Pauzy i półpauzy. Często bez spacji, przez co dzielenie na zdania czasem sklei dwa zdania w jedno albo przetnie jedno w złym miejscu.
- Miękkie dywizy i spacje niełamliwe. Niewidoczne na ekranie, obecne w strumieniu bajtów i po cichu odpowiedzialne za liczby słów, które do niczego nie pasują.
- Ligatury. „fi" i „fl" bywają pojedynczymi glifami. Zwykle wyciągają się dobrze, ale nietypowy osadzony font potrafi wyprodukować dziwne znaki w co którymś słowie.
- Materiały wstępne i końcowe. Strona tytułowa, nota copyright, dedykacja, podziękowania, „o autorze", resztki indeksu. Boilerplate, który pojawia się w każdej konwertowanej książce, więc w korpusie staje się fałszywie częstym słownictwem. Przytnij go, jeśli robisz analizy częstości.
Nic z tego nie jest niechlujstwem konwertera. To naprawdę siedzi w pliku, a wiedza, czego szukać, to większość wygranej.
DRM — i skąd się biorą książki, które da się konwertować
Książka kupiona u dużego sprzedawcy jest zwykle zaszyfrowana. XHTML w kontenerze jest zaszyfrowany,
a plik encryption.xml to deklaruje, więc żaden konwerter — z tym włącznie — nie
przeczyta z niej ani słowa. Wgraj taką, a dostaniesz błąd albo pusty wynik. Warto to wiedzieć, zanim
spędzisz dziesięć minut na zastanawianiu się, co poszło nie tak.
Mnóstwo dobrych źródeł jest z założenia wolnych od DRM. Katalog domeny publicznej Project Gutenberg jest ogromny i idealny do pracy korpusowej. Standard Ebooks robi starannie złożone wydania domeny publicznej z wyjątkowo czystymi znacznikami. Większość wydawców technicznych, oficyny okołoarXivowe, tytuły na licencjach Creative Commons i wszystko, co samodzielnie wyeksportujesz, konwertuje się bez marudzenia. Konwertowanie własnych książek na własny użytek to normalna praktyka; rozpowszechnianie wyciągniętego tekstu książki chronionej prawem autorskim — nie. Tyle w temacie.
Jak to robić na całej bibliotece
Konwersja jednej książki to robota na dwie sekundy. Ciekawsza wersja to konwersja czterdziestu i traktowanie wyniku jak zbioru danych. Kilka rzeczy, dzięki którym pójdzie gładko:
- Spakuj partię do zipa. ZIP na tekst bierze archiwum i konwertuje każdy obsługiwany plik w środku za jednym przejściem, co bije czterdzieści osobnych uploadów. Pilnuj limitu 50 MB — EPUB-y są małe, ale ilustrowane już nie.
- Znormalizuj przed chunkowaniem. Wyprostuj cudzysłowy, usuń miękkie dywizy, zbij powtórzone puste linie. Zrób to raz na wejściu, a każdy krok dalej w potoku będzie prostszy.
- Tnij na granicach akapitów, nie na stałej liczbie znaków. Książki mają prawdziwe akapity i to są naturalne jednostki semantyczne. Ślepe cięcia co 1000 znaków tną zdania na pół i produkują embeddingi fragmentów.
- Zachowaj nazwę pliku jako metadane. Kiedy wszystko jest już jednym strumieniem tekstu, tytuł i autor to jedyna proweniencja, jaką masz. Trzymaj je przy każdym kawałku, inaczej wyszukasz świetny fragment i nie będziesz mieć pojęcia, z której książki pochodzi.
- Sprawdź liczbę tokenów. Licznik pod wynikiem daje prawdziwą liczbę dla danego tytułu, a to jest różnica między planowaniem pipeline'u a zgadywaniem.
EPUB to lepszy surowiec niż wersja PDF
Jeśli ten sam tytuł istnieje w obu formatach, EPUB daje czystszy tekst mniejszym kosztem. PDF ma stały układ: każda widoczna linia to osobny ciąg glifów, więc akapity przyjeżdżają połamane na krótkie linie, słowa przeniesione dywizem na końcu wiersza zostają przeniesione, a żywa pagina i numer strony lądują w twojej prozie co kilkaset słów. PDF na tekst radzi sobie z tym wszystkim, ale potem będziesz szorować.
EPUB jest płynny (reflowable). Nie ma stron, więc nie ma śmieci strony, a akapity są prawdziwymi akapitami w znacznikach — wychodzą więc jako ciągłe linie, po których wyszukiwanie regeksem może dopasowywać w poprzek. Do wszystkiego, co obejmuje szukanie fraz, dzielenie na zdania albo embeddingi, sama ta różnica jest warta zamiany.
Najczęściej zadawane pytania
Jak przekonwertować EPUB na tekst?
Upuść .epub w konwerterze powyżej, a tekst książki wraca jako czysty tekst do pobrania jako .txt. Za darmo, bez rejestracji, 50 MB na plik — z zapasem więcej, niż potrzebuje jakikolwiek płynny e-book, bo EPUB to skompresowany HTML i nawet długie książki rzadko przekraczają kilka megabajtów.
Czy zadziała na książkach kupionych w Kindle albo Apple Books?
Tylko jeśli są wolne od DRM. Kupiona książka jest zwykle zaszyfrowana i związana z kontem, które ją kupiło, a zaszyfrowany plik nie ma w środku czytelnego tekstu, do którego jakikolwiek konwerter mógłby sięgnąć. Tytuły z domeny publicznej z Project Gutenberg i Standard Ebooks, książki techniczne od wydawców sprzedających pliki bez szyfrowania oraz twoje własne eksporty konwertują się normalnie.
Czy rozdziały pozostają rozdzielone w wyniku?
Granice rozdziałów przeżywają jako przerwy w toku tekstu, ale tytuły rozdziałów przyjeżdżają jako zwykłe linie, bez niczego, co by je oznaczało jako nagłówki — taka jest natura spłaszczania do tekstu. Jeśli potem musisz nawigować albo ciąć po rozdziałach, EPUB na Markdown zachowuje poziomy nagłówków, które to umożliwiają.
A co z przypisami dolnymi i końcowymi?
Przechodzą, na ogół zebrane na końcu sekcji, do której należały, a nie w linii, gdzie siedział odsyłacz. Dla tekstów naukowych oznacza to serię treści przypisów między rozdziałami. Łatwo to przeczytać dalej, ale warto o tym wiedzieć, jeśli tniesz wynik pod embeddingi i zastanawiasz się, czemu jeden kawałek to same cytowania.
Czy mogę tak podać całą książkę LLM-owi?
Możesz przekonwertować ją za jednym przejściem, ale sprawdź liczbę tokenów przed wklejeniem. Trzystustronicowa powieść to z grubsza 120 000 tokenów — mieści się w oknie kontekstu 200K i wyraźnie przekracza to, co interfejs czatu przyjmie w jednej wiadomości. Licznik pod wynikiem poda ci liczbę, zanim przekonasz się boleśnie.
Reszta zestawu narzędzi
EPUB to jeden z trzynastu obsługiwanych formatów. File2Txt obsługuje wszystkie z jednego uploadu. Do maszynopisów jest Word na tekst, do starych dokumentów rich-text RTF na tekst, a do zapisanych artykułów HTML na tekst. Twoje własne dane strukturalne idą przez CSV na tekst albo JSON na tekst.
Poza dokumentami: przekonwertuj repozytorium GitHub na tekst, projekt GitLab albo katalog lokalny, a Web2Txt ściągnie żywe strony jako tekst. Jest też dłuższy przewodnik po przygotowywaniu dokumentów dla LLM-ów, jeśli chcesz szerszego obrazu.
Repo2Txt tworzy i utrzymuje v12hero, niezależny deweloper budujący natywne i webowe aplikacje stawiające prywatność na pierwszym miejscu.