PDF lze prohlížet, ale ne kopírovat, nemusí to být sken: nejprve zkontrolujte textovou vrstvu a mapování znaků

Pokud zde není žádný text, nelze jej přímo hodnotit jako „textová vrstva je normální“, ani jej nelze přímo hodnotit jako naskenovanou kopii. Text, alternativní znaky a odkazy na obrázky stránky jsou zaznamenány níže a stav, který má být zkontrolován, je zobrazen; odkazy na obrázky nedokazují, že obrázek pokrývá celou stránku nebo že je text identifikovatelný.

Pokud vidíte text v PDF, ale nemůžete jej zkopírovat, nemusí to být naskenovaná kopie nebo může být problém s mapováním znaků. Tento článek je napsán pro vývojáře a zpracovatele dokumentů, kteří potřebují extrahovat, překládat nebo strukturovat obsah PDF. Po přečtení budete vědět, jak nejprve rozlišit problémy na úrovni textu a obsah obrázků, a pomocí jednotných signálů určit, co dělat dál.

Zde uvedený kód a příklady používají syntetické vzorky, které prošly kontrolou vzorků v izolovaném prostředí a nepředstavují záruku všech skutečných souborů nebo výkonu produktu. Před zpracováním důležitých dokumentů si prosím uschovejte originály a zkontrolujte je podle hranic a přejímacích položek v textu.

PDF lze prohlížet, ale ne kopírovat. Je to naskenovaná kopie? Závěr jednou větou

Nelze přímo soudit. Nejprve zkontrolujte textovou vrstvu a mapování znaků, poté se podívejte na obraz stránky a nakonec určete, zda se jedná o selhání skenování nebo mapování.

vaší situaciDoporučené postupydůvod
Vidí text, kopíruje zkomolené znaky nebo prázdná místaZkontrolujte mapování ToUnicode a kódování písemVizuál je normální, ale textová vrstva je poškozená, většinou kvůli chybějícímu nebo špatnému mapování.
Zkopírované znaky vypadají rozumně, ale mají nesprávnou sémantikuPorovnejte výsledky extrakce s vizuálním obsahemHeuristické mapování může mít na výstupu nesprávné znaky a projít kontrolou bez nuly
Není zde žádný text, ale na stránce jsou obrázkyZkontrolujte, zda obrázek obsahuje text, a poté určete, zda je vyžadováno OCRCitace obrázků se nerovnají celostránkovým skenům ani nedokazují, že text je čitelný
Text ani obrázky nejsou kontroloványZobrazení obsahu výkresu stránkyNeexistuje žádný způsob, jak dojít k závěru, že stránka je prázdná

Proč je zkopírovaný kód zkomolený?

Uživatelé mohou vidět text normálně v prohlížeči nebo čtečce, ale zkopírovaný text je zkomolený, prázdné nebo nepodstatné symboly. Obvykle se nejedná o poškozený soubor, ani se nezbytně nejedná o naskenovanou kopii. Hlavní příčinou je, že glyf (Glyph) na mapovací tabulku Unicode (ToUnicode CMap) uvnitř PDF chybí nebo je nesprávný.

Vykreslovací moduly se při kreslení vizuálního obsahu spoléhají na indexy glyfů, zatímco nástroje schránky a extrakce textu se při obnově sémantických znaků spoléhají na mapovací tabulky. Když jsou dvě rozbité, objeví se „vizuálně normální, strojově nečitelná"vrstva špatného textu.

Než provedete překlad dokumentu nebo strukturovanou extrakci, musíte nejprve potvrdit, zda problém spočívá v mapování nebo zda je stránka sama o sobě obrázkem. Jinak budou následné procesy OCR nebo NLP založeny na nesprávném předpokladu.

Mechanismus přerušení mezi indexem glyfů a mapováním Unicode

Specifikace PDF umožňuje do písem vkládat pouze informace o obrysu a šířce glyfů, ale ne mapování kódování znaků. Následující podmínky mohou způsobit poškození:

  • Software, který generuje PDF, nezapisuje tabulku ToUnicode správně
  • Používá se vlastní kódování, ale nejsou poskytnuta žádná pravidla dekódování

V tuto chvíli může extraktor získat pouze původní ID glyfu (CID). Tato ID jsou smysluplná pro renderer, ale nemají žádnou hodnotu pro zpracování textu.

Některé nástroje používají k uhodnutí mapování heuristiku a výsledkem mohou být znaky, které vypadají rozumně, ale ve skutečnosti jsou špatné, jako je převod čínské interpunkce na písmena latinky nebo nahrazení čísel řídicími znaky. Tento druh "fiktivního textu" je jemnější než čisté prázdné znaky, protože může projít kontrolou bez nuly, ale způsobí tiché znečištění dat v navazujících linkách.

Klíčem k posouzení takových problémů není zjistit, zda lze text vybrat, ale ověřit, zda je extrahovaný řetězec sémanticky konzistentní s vizuálním obsahem.

Pro diagnostiku syntézy paměti použijte PyMuPDF

Následující kód vytvoří vstup v paměti a ověří diagnostickou logiku:

from io import BytesIO
from PIL import Image
import pymupdf
def inspect(page):
    text = page.get_text().strip()
    images = page.get_images()
    if "\ufffd" in text:
        state = "review_replacement_characters"
    elif text:
        state = "text_present_needs_semantic_review"
    elif images:
        state = "image_without_extracted_text"
    else:
        state = "empty_text_needs_review"
    return {"state": state, "characters": len(text), "image_refs": len(images)}
with pymupdf.open() as doc:
    doc.new_page().insert_text((50, 50), "Text sample")
    doc.new_page()
    picture = BytesIO()
    Image.new("RGB", (16, 16), "red").save(picture, format="PNG")
    doc.new_page().insert_image(pymupdf.Rect(10, 10, 100, 100), stream=picture.getvalue())
    assert inspect(doc[0])["state"] == "text_present_needs_semantic_review"
    assert inspect(doc[1])["state"] == "empty_text_needs_review"
    assert inspect(doc[2])["state"] == "image_without_extracted_text"
    assert inspect(doc[2])["characters"] == 0

Ve výše uvedeném kódu funkce diagnose_text_layer získává původní text prostřednictvím get_text("text"), používá unicodedata.category k filtrování řídicích znaků a bílých znaků a vypočítává podíl efektivního obsahu. Zároveň detekuje přítomnost obrazových bloků prostřednictvím get_text("blocks").

Tato dvě tvrzení ověřují dva případy: normální dokument s rychlostí tisku vyšší než 0,9 a naskenovaný dokument s nulovým počtem znaků. To pokrývá logiku větvení jádra.

Je důležité si uvědomit, že tato diagnóza je založena výhradně na statistických charakteristikách. U šifrovaných písem nebo speciálních kódování je stále vyžadována ruční kontrola.

📊 Srovnání jádra

V následující tabulce jsou uvedeny pokyny pro kontrolu odpovídající různým signálům a závěry, které by neměly být vyvozovány:

SignálDalší krok ke kontrolezávěry, které by se neměly dělat
Je tam tisknutelný textZkontrolujte sémantiku, pořadí a zdrojePokud to lze extrahovat, znamená to, že je to správné.
Existují alternativní postavyZkontrolujte kódování a mapování písemVšechny postavy jsou ztraceny
Jsou tam obrázky, ale žádný textZkontrolujte, zda obrázek obsahuje textMusí to být sken celé stránky
Nebyl zjištěn text ani obrázkyZobrazení obsahu výkresu stránkyMusí to být prázdná stránka

🎯 Která metoda je pro vás vhodná?

Pokud vidíte text, ale nemůžete jej zkopírovat

Upřednostněte kontrolu mapování ToUnicode a kódování písem, což je obvykle způsobeno poškozeným mapováním.

Pokud zkopírovaný text vypadá normálně, ale obsah je nesprávný

Použijte vizuální obsah k porovnání výsledků extrakce segment po segmentu, nedívejte se pouze na to, zda není prázdný.

Pokud stránka obsahuje pouze obrázky a žádný text

Zkontrolujte, zda obrázek obsahuje text, a rozhodněte, zda je vyžadováno OCR. Nepředpokládejte, že celá stránka je sken.

Pokud se chystáte překládat dokumenty

Kontroly integrity textu jsou dokončeny před předáním znecitlivělých vzorků do procesu překladu.

Tento kontrolní seznam použijte pro překlad dokumentů

Nejprve zkontrolujte pořadí stránek, umístění zdroje a integritu textu a poté odešlete stejný znecitlivěný vzorek do procesu překladu. Po překladu je ještě potřeba zkontrolovat, zda název, text a ilustrace správně odpovídají. Nemůžete jen zkontrolovat, zda je text hladký.

OmniDoc (produktový portál) poskytuje portál pro překlad dokumentů ve více formátech a oficiální webové stránky zavádějí funkce OCR, glosář a dvojjazyčné porovnání. Pokud si přejete zahájit zpracování přímo ze souboru, můžete tuto cestu vyhodnotit pomocí reálného vzorku.

Použijte prosím znecitlivěné soubory, k jejichž nahrávání máte oprávnění, a ke kontrole výsledků použijte zaškrtávací položky v tomto článku. Neexistuje žádné tvrzení, že OmniDoc používá open source knihovny nebo interní algoritmy uvedené v tomto článku, ani tento příklad nenahrazuje testování výkonu produktu.

❓ Často kladené otázky (FAQ)

1. Pokud lze text extrahovat, znamená to, že textová vrstva je správná?

nemůže. Extrahovaný obsah musí být také zkontrolován z hlediska sémantiky, pořadí a původu. Když dojde k chybám mapování, mohou být na výstupu zdánlivě rozumné znaky.

2. Na stránce jsou obrázky. Znamená to, že jde o naskenovanou kopii?

nejistý. Citace obrázku nedokazuje, že obrázek pokrývá celou stránku, ani nedokazuje, že lze text rozpoznat. Musíte zkontrolovat, zda obrázek obsahuje text.

3. Nelze detekovat text ani obrázky. Znamená to, že stránka je prázdná?

Z toho nelze vyvozovat žádný závěr. Než uděláte úsudek, měli byste zkontrolovat obsah výkresu stránky.

4. Bude tento diagnostický skript fungovat se všemi soubory PDF?

nemůže. Vychází pouze ze statistických charakteristik a u šifrovaných písem nebo speciálních kódování je stále vyžadována ruční kontrola.

📝 Shrnutí

Ať už lze PDF zobrazit nebo kopírovat, nejprve zkontrolujte textovou vrstvu a mapování znaků, poté se podívejte na obsah obrázku a nakonec určete, zda se jedná o naskenovaný dokument. Před zpracováním si originály uschovejte a prohlédněte si je jeden po druhém s položkami kontroly.

Vyzkoušejte to hned: Nahrajte dokument a začněte překládat při zachování původního rozvržení

Další čtení

Aktualizováno 2026-11-14