pypdf nie może wyodrębnić tekstu ze zeskanowanego dokumentu. Nie da się tego rozwiązać zmieniając parametry.

Krótki lub pusty tekst jest jedynie sygnałem do dalszej kontroli i nie jest bezpośrednio równoznaczny ze skanem. Poniższa strona rejestruje, czy tekst jest wyodrębniany; puste strony, strony z obrazami i strony z nieprawidłowym kodowaniem wymagają różnych kolejnych ocen. Ekstrakcja tekstu pypdf nie jest OCR.

Kiedy pypdf nie może wyodrębnić tekstu, problem zwykle nie dotyczy parametrów. Czyta obiekty tekstowe w formacie PDF. Jeśli strona jest zasadniczo obrazem, dostosowanie parametrów nie umożliwi odczytania znaków, które nie istnieją. Ten artykuł jest przeznaczony dla programistów i osób zajmujących się dokumentacją, którzy muszą przetwarzać pliki PDF wsadowo i napotykają problem „są słowa, ale wyodrębnianie jest puste". Po przeczytaniu można za pomocą programu ustalić strona po stronie, czy warstwa tekstowa istnieje i czy jest ona prawidłowa, a także zdecydować, czy skorzystać z niej bezpośrednio, wprowadzić OCR, czy też przejść do ręcznego przeglądu.

Wszystkie poniższe przykłady zademonstrowano przy użyciu próbek syntetycznych. Kod został sprawdzony w izolowanym środowisku, ale nie gwarantuje to działania wszystkich rzeczywistych plików ani produktu. Przed przystąpieniem do przetwarzania ważnych dokumentów prosimy o zachowanie oryginałów i zapoznanie się z nimi zgodnie z granicami i pozycjami akceptacji w tekście.

Nie można wyodrębnić tekstu z pliku pypdf? Wniosek w jednym zdaniu

Krótki lub pusty tekst jest jedynie sygnałem do dalszej kontroli i nie jest bezpośrednio równoznaczny ze skanem. Ekstrakcja tekstu z pypdf nie jest OCR. Przed podjęciem decyzji o dalszej metodzie przetwarzania należy określić rzeczywistą sytuację warstwy tekstowej strona po stronie.

twoja sytuacjaZalecane praktykipowód
Wyodrębniony tekst jest krótszyZachowaj tekst na pierwszym miejscu i nie wymuszaj OCR, ponieważ jest on mniejszy niż próg.Krótki tekst jest jedynie sygnałem do dalszej kontroli
Wynik ekstrakcji jest pustySprawdź obraz strony i typ treści, nie oceniaj go bezpośrednio jako zeskanowanej kopiiPusty tekst nie jest równoznaczny ze skanami
Strona wizualnie zawiera słowa, ale wynikiem wyodrębnienia są puste lub zniekształcone znaki.Przejdź do procesu OCRpypdf odczytuje obiekt tekstowy, brak czytelnego kodowania znaków na obrazie
Warstwa tekstowa dwuwarstwowego pliku PDF jest niekompletna lub źle wyrównana z obrazemWłącz do kolejki ręcznego przeglądu lub wykonaj porównanie wizualneWarstwa tekstowa może obejmować tylko część treści, a kod można zmienić, ale nie można zagwarantować poprawności semantyki.
Błąd podczas procesu analizowaniaNagraj nieprawidłowy etapNie należy udawać pustej strony

Techniczne rozróżnienie między analizowaniem tekstu a rozpoznawaniem obrazu

Kiedy wiele osób napotyka błąd ekstrakcji, ich pierwszą reakcją jest sprawdzenie, czy brakujeextraction_mode="layout" lub czy należy określić kąt obrotu. Jednak w większości scenariuszy inżynierskich jest to raczej niedopasowanie w wyborze narzędzia niż problem z parametrami. pypdf to zasadniczo parser strumienia treści PDF, który odczytuje instrukcje obiektów tekstowych osadzone w pliku. Jeśli plik PDF jest w zasadzie obrazem (skanem), niezależnie od tego, jak ustawiony jest tryb wyodrębniania, znaków nie da się odczytać z powietrza.

Aby to zrozumieć, musimy najpierw rozpoznać pierwotną intencję projektową pliku PDF. PDF jest przeznaczony do precyzyjnego drukowania i prezentacji wizualnej, a nie do przechowywania danych strukturalnych. Cyfrowy natywny plik PDF zawiera zasoby czcionek, mapy kodowania i instrukcje rysowania tekstu z absolutnie pozycjonowanym tekstem. pypdf przywraca tekst, analizując te instrukcje. Zaletą tego mechanizmu jest determinizm: nie myli podobnych słów (takich jak 0 i O), może zachować specjalne symbole i ligatury oraz nie ma na niego wpływu szum obrazu.

Dlaczego nie mogę wyodrębnić zeskanowanego pliku PDF?

Zeskanowane pliki PDF to po prostu pojemniki na obrazy. Widoczny tekst to po prostu matryca pikseli w strukturze pliku i nie ma obiektu tekstowego, który mógłby zostać odczytany przez extract_text().

Dlaczego wynik dwuwarstwowego pliku PDF jest niestabilny?

Niektóre zeskanowane dokumenty są przetwarzane za pomocą oprogramowania OCR i mają osadzoną ukrytą warstwę tekstową, zwaną „dwuwarstwowym plikiem PDF". pypdf może wyodrębnić tylko ten poziom treści. Jeśli oryginalna jakość OCR jest niska, brakuje warstwy tekstowej, kodowanie jest uszkodzone lub znacznie niedopasowane do obrazu, wyniki ekstrakcji będą niekompletne lub nawet całkowicie puste. Kontynuowanie debugowania parametrów pypdf w tej chwili nie ma większego sensu i powinieneś przejść na proces optycznego rozpoznawania znaków (OCR).

Podstawą oceny nie powinna być obserwacja gołym okiem czy na stronie znajdują się słowa, lecz wykorzystanie programu umożliwiającego wykrycie faktycznego istnienia i ważności warstwy tekstowej.

📊 Porównanie rdzeni

Typ plikuCzy pypdf można wyodrębnić bezpośrednio?Podstawa wyrokuDalsze przetwarzanie
Cyfrowo natywny plik PDFMócAnalizuj czcionki, mapy kodowania i instrukcje rysowania tekstuSkorzystaj bezpośrednio z wyników ekstrakcji
Czysto zeskanowany plik PDFnie mogęTylko piksele, żadnych obiektów tekstowychWejdź do procesu OCR
Dwuwarstwowy plik PDFMożna wyodrębnić tylko ukryte warstwy tekstoweMoże brakować warstwy tekstowej, być uszkodzona lub źle wyrównanaSprawdź kompletność, w razie potrzeby przejrzyj ręcznie lub porównaj wizualnie

Przykład syntezy: użyj linii bazowej testu, aby zweryfikować logikę wykrywania

Aby zademonstrować, jak programowo rozróżnić powyższe sytuacje, musimy najpierw skonstruować zestaw standardowych syntetycznych danych wejściowych. Poniższy kod jest jedynie logiczną demonstracją i należy go uruchomić w środowisku, które blokuje własne zależności. Nie jest to faktyczny raport z testów konkretnych plików produkcyjnych. Proszę przygotować dane testowe w następujący sposób:

  1. Normalny cyfrowy plik PDF: Eksportuj dokument zawierający tekst „Faktura nr 2024-001"przy użyciu programu Word lub LaTeX.
  2. Pure Scan PDF: Zeskanuj dokument papierowy do formatu JPEG, a następnie zamknij go w jednostronicowy plik PDF, upewniając się, że nie zawiera on żadnej warstwy tekstowej.
  3. Przykład przypadku granicznego: Utwórz plik PDF „pseudo-OCR"z pustym ciągiem znaków lub wszystkimi białymi znakami w warstwie tekstowej, aby symulować dokument dwuwarstwowy, którego nie można rozpoznać.

Kod wykrywania dostępności warstwy tekstowej

Poniższy przykład języka Python pokazuje, jak zbudować logikę wykrywania w pamięci. Kod zależy odpypdf>=3.0.0, zainstaluj odpowiednią wersję w niezależnym środowisku wirtualnym. Skrypt nie zawiera prawdziwej ścieżki pliku. Przed uruchomieniem zastąp ścieżkę zastępczą powyższym syntetycznym plikiem testowym.

from io import BytesIO
import pymupdf
from pypdf import PdfReader
with pymupdf.open() as doc:
    page = doc.new_page()
    page.insert_text((50, 50), "Hi")
    doc.new_page()
    raw = doc.tobytes()
reader = PdfReader(BytesIO(raw))
records = []
for index, page in enumerate(reader.pages):
    text = page.extract_text() or ""
    records.append({"page": index + 1, "text": text,
                    "status": "text_present" if text.strip() else "review_empty_text"})
assert len(records) == 2
assert records[0]["status"] == "text_present"
assert records[0]["text"].strip() == "Hi"
assert records[1]["status"] == "review_empty_text"

Decyzja o akceptacji i granice ręcznego przeglądu

Demonstracja kodu rozwiązuje jedynie binarną ocenę „czy istnieje warstwa tekstowa", a aby uzyskać efekt kompleksowy, należy wziąć pod uwagę bardziej praktyczne czynniki. W poniższej tabeli wymieniono typowe zjawiska obserwacyjne i odpowiadające im decyzje dotyczące przetwarzania, wyjaśniając mający zastosowanie zakres zautomatyzowanego procesu i ręczne punkty interwencji:

przestrzegaćco robićnie należy wnioskować
krótki teksttekst pozostajeNie wymuszaj OCR ze względu na wartość mniejszą niż próg
pusty tekstSprawdź obrazy stron i typy treściNie jest bezpośrednio oceniany jako zeskanowana kopia
Analiza nie powiodła sięNagraj nieprawidłowy etapNie udaję pustej strony

Uwaga specjalna: jeśli dokument zawiera zarówno opcjonalne warstwy tekstowe, jak i graficzne, nie można po prostu ufać integralności warstwy tekstowej. Niektóre skanery generują dwuwarstwowe pliki PDF, w których warstwa tekstowa pokrywa tylko część treści lub współrzędne są poważnie przesunięte w stosunku do obrazu. Takie przypadki należy uwzględnić w kolejce ręcznego przeglądu lub wtórnej weryfikacji za pomocą algorytmu porównania wizualnego.

Referencje

  • oficjalny dokument wyodrębniania tekstu w formacie pypdf: Extract Text from a PDF
  • pypdf Wyjaśnienie różnicy pomiędzy OCR a ekstrakcją tekstu: To samo co w dokumencie rozdział „OCR a ekstrakcja tekstu"

Użyj list kontrolnych do tłumaczenia dokumentów

Dzielenie plików, szyfrowanie lub przetwarzanie załączników to przygotowania do dostarczenia, a tłumaczenie nie może zastąpić tej kontroli. Zaleca się najpierw zachować oryginalną kopię i listę przetwarzania, a następnie ocenić kolejność stron, linki i integralność treści tłumaczenia.

OmniDoc (portal produktowy) udostępnia wieloformatowy portal do tłumaczenia dokumentów, a oficjalna strona internetowa zawiera funkcje OCR, glosariusza i porównywania dokumentów dwujęzycznych. Jeśli chcesz rozpocząć przetwarzanie bezpośrednio z pliku, możesz ocenić tę ścieżkę na prawdziwej próbce. Użyj plików pozbawionych zabezpieczeń, do przesłania których masz pozwolenie, i skorzystaj z elementów zaznaczonych w tym artykule, aby sprawdzić wyniki. W tym artykule nie twierdzono, że OmniDoc korzysta z bibliotek open source lub wewnętrznych algorytmów opisanych w artykule, a przykłady nie zastępują testowania wydajności produktu.

🎯 Która metoda jest dla Ciebie odpowiednia?

jeśli…

  • Uzyskany plik PDF może zaznaczyć tekst: W większości przypadków można go wyodrębnić bezpośrednio za pomocą pliku pypdf, a wynik tekstowy zostanie zachowany.
  • Wynik wyodrębnienia jest krótki lub pusty: Najpierw sprawdź obraz strony i typ treści, a następnie ustal, czy potrzebny jest OCR. Nie należy wyciągać bezpośrednich wniosków.
  • Słowa są widoczne na stronie, ale nie można ich wyodrębnić: Przejdź do procesu OCR bez wielokrotnego dostosowywania parametrów.
  • Przetwarzanie dwuwarstwowego pliku PDF: Sprawdź, czy warstwa tekstowa jest kompletna i wyrównana z obrazem. W razie wątpliwości zapoznaj się z instrukcją obsługi.

❓ Często zadawane pytania (FAQ)

1. Jeśli nie można wyodrębnić tekstu, czy musi to być zeskanowana kopia?

niepewny. Krótki lub pusty tekst jest jedynie sygnałem do dalszej kontroli. Zanim podejmiesz decyzję, musisz sprawdzić obraz strony i typ treści.

2. Czy dostosowanie extraction_mode rozwiąże problem wyodrębniania zeskanowanych dokumentów?

nie mogę. To, co czyta pypdf, to obiekt tekstowy. Na zeskanowanym obrazie nie ma czytelnego kodowania znaków, a tekstu nie można uzyskać z powietrza, dostosowując parametry.

3. Czy pypdf może zastąpić OCR?

nie mogę. Ekstrakcja tekstu w pypdf nie jest OCR, może czytać tylko obiekty tekstowe, które już znajdują się w pliku.

4. Czy można bezpośrednio ufać warstwie tekstowej dwuwarstwowego pliku PDF?

Nie można ufać bezpośrednio. Warstwa tekstowa może zakrywać tylko część treści lub być źle dopasowana do współrzędnych obrazu. Należy to zweryfikować poprzez ręczny przegląd lub porównanie wizualne.

5. Wyodrębniono bardzo mało tekstu. Chcesz od razu zrobić OCR?

Z tego powodu nie ma potrzeby wymuszania OCR. W oryginalnym tekście sugerowano, że najpierw należy zachować krótki tekst, a następnie połączyć go z innymi elementami do sprawdzenia w celu oceny.

📝 Podsumowanie

pypdf nie może wyodrębnić tekstu, więc nie spiesz się jeszcze z dostosowaniem parametrów. Określ stan faktyczny warstwy tekstowej strona po stronie, a następnie zdecyduj, czy użyć jej bezpośrednio, wprowadzić OCR, czy też przejść do ręcznego przeglądu. Wynik będzie bardziej wiarygodny.

Wypróbuj teraz: prześlij dokument, aby rozpocząć tłumaczenie, zachowując oryginalny układ

Zaktualizowano 2026-11-15