Před předáním úkolu překladu PDF nejprve zkontrolujte písmo, místo abyste spěchali se změnou písma.

Výchozí seznam písem má jinou délku než n-tice vrácená full=True. Dále si přečtěte prvních šest položek a poté zkontrolujte, zda jsou bajty písma vrácené extraktorem_font prázdné. Odkaz na font Base14 neznamená, že je font vložený programem; ani podmnožiny písem by neměly být považovány za chybu.

Když mnoho lidí dostane PDF k překladu, první věc, kterou napadne, je přímo změnit na Siyuan Hengti nebo Arial. To často způsobuje problémy při doručování: matematické symboly se stávají čtverečky, čísla tabulek jsou špatně zarovnaná nebo nelze v některých čtečkách otevřít překlad. Tento článek je napsán pro vývojáře a správce dokumentů, kteří potřebují převzít úlohu překladu PDF. Po přečtení budete vědět, jak používat PyMuPDF k inventarizaci písem, jak interpretovat vrácené výsledky a jaké závěry nelze vyvodit pouze na základě výstupu kódu.

Účelem inventáře písem je potvrdit technickou upravitelnost a stabilitu vykreslování, nikoli provádět audit souladu s právními předpisy. Výchozí seznam písem se liší od délky n-tice vrácené full=True. Při čtení je třeba vzít prvních šest položek a poté zkontrolovat, zda jsou bajty písma vrácené extract_font prázdné. Odkazy na písma Base14 neznamenají, že písmo je vložené programem a písma podmnožiny by neměla být vždy považována za chybu.

Závěr jednou větou

Nejprve proveďte inventarizaci písem a poté určete cestu překladu. Před extrahováním textu globálně neměňte písma.

vaší situaciDoporučené postupydůvod
Program písma je prázdnýZáznamy nejsou extrahovány do embedderu a potvrzují situaci na stránceBase14 reference nerovná se vložené písmo
setkat se s podmnožinou písemUdržujte identitu písmaPodmnožina písem se nerovná poškození
Seznam písem je prázdnýPotvrďte obsah stránkyStránka může být obrázek nebo jiná nakreslená cesta
Potřeba zpracovat skutečné souboryNejprve zkontrolujte desenzibilizovanými vzorkyUkázkový kód nepředstavuje účinky na všechny skutečné soubory

Proč nemůžeme globálně přímo nahradit písma?

Přímá výměna písem narazí na několik typických problémů:

  • Matematické symboly v původním textu se stanou čtverci.
  • Zarovnání čísel v tabulce na stejnou šířku je neplatné.
  • Jsou vložena omezená písma, což způsobuje, že se překlad v některých čtečkách neotevře.

Proto před zahájením extrakce textu nebo rekonstrukce sazby proveďte inventarizaci písem dokumentu. `get_page_fonts()` je základní sonda poskytovaná PyMuPDF, která vám může říct, na které zdroje písem skutečně odkazuje každá stránka, zda jsou plně vložené a typ kódování. Tyto informace určují, zda se má v budoucnu použít OCR, přímá výměna nebo ruční přeuspořádání.

Klíčové body při čtení informací o písmech

  • Výchozí seznam písem má jinou délku než n-tice vrácená full=True, která se čte jako prvních šest položek.
  • Když je program písem prázdný, znamená to, že vložené bajty písem nejsou extrahovány.
  • Podmnožina písem si musí ponechat pouze identifikátor písma a neposuzuje to přímo jako chybu.

Syntetické testování: konstrukce paměti a ověřování tvrzení

Aby mohl příklad běžet izolovaně, vytvořili jsme plně samostatný testovací případ. Namísto spoléhání se na externí soubory používá skript PyMuPDF k vytvoření PDF obsahujícího standardní písma v paměti a poté v něm okamžitě provádí inventarizaci písem. Tím je zajištěna nejen reprodukovatelnost, ale také zabránění rizikům souvisejícím s autorským právem a soukromím.

import pymupdf
with pymupdf.open() as doc:
    page = doc.new_page()
    page.insert_text((72, 72), "Font sample", fontname="helv")
    fonts = doc.get_page_fonts(0, full=True)
    assert fonts
    report = []
    for item in fonts:
        xref, ext, kind, basefont, name, encoding = item[:6]
        extracted_name, extracted_ext, extracted_type, data = doc.extract_font(xref)
        report.append({"name": basefont, "font_program_present": bool(data),
                       "xref": xref, "encoding": encoding})
    assert report[0]["name"] == "Helvetica"
    assert report[0]["font_program_present"] is False
    assert report[0]["xref"] > 0

Tento test má jasné hranice: „poškozený"nebo „nevložený"objekt syntetického písma nelze zkonstruovat v paměti, aniž by byl vložen externí soubor písma. Proto se tento test zaměřuje na dvě věci: ověření přesnosti analýzy normálních vložených písem a obrannou manipulaci s neplatnými čísly stránek funkcí. Výjimečné větve je třeba testovat individuálně. Demo kód běží v izolovaném prostředí, ale to nepředstavuje záruku všech skutečných souborů nebo výkonu produktu.

Kritéria přijetí a hranice manuální kontroly

„Bezpečný"nebo „varovný"výstup z kódu jsou pouze technické signály a nelze je přímo přirovnávat k proveditelnosti překladu. Skript dokáže přesně hlásit stav vložení, ale nedokáže zjistit, zda má písmo odpovídající glyf v cílovém jazyce, ani nedokáže vyhodnotit, zda licence umožňuje úpravu vložení. Tato rozhodnutí musí učinit lidé v kontextu projektu.

Konkrétní rozhodnutí týkající se zpracování výjimek

pozorovatco dělatby nemělo být vyvozováno
Program písma je prázdnýZáznamy nebyly načteny do embedderuCitace Base14 se nerovná vložení
Písmo ZijiZachování značení písmaPoškození není přímo posuzováno
Seznam je prázdnýZkontrolujte obsah stránkyMůže to být obrázek nebo jiná kreslící cesta

Před manipulací s důležitými dokumenty si prosím ponechte originály a zkontrolujte je podle výše uvedených hranic a položek přijetí.

🎯 Která metoda ti vyhovuje?

Pokud právě obdržíte PDF k překladu

Nejprve si zkontroluj písma a pak se rozhodni, kterou cestou se vydat; nespěchej s jejich nahrazením.

Pokud výsledek detekce ukáže, že program písma je prázdný

Nahrajte to a ověřte obsah stránky; nepředpokládejte, že vkládání je dokončeno.

Pokud dokument obsahuje podmnožiny fontů

Uchovejte značky písma a choďte k nim normálně, místo abyste je přímo soudili jako chyby.

Pokud je vyžadováno ověření u skutečných dokumentů

Použijte vzorek desenzibilizace, který jste nahráli s vaším svolením, a ověřte výsledky pomocí položek kontrolního seznamu v tomto článku.

❓ Často kladené otázky (FAQ)

1. Znamená Base14 font reference, že písmo je už vložené?

Ne. References písma Base14 neznamenají, že program písma je vložený; musíte zkontrolovat, zda jsou bajty fontů vrácenéextract_font prázdné.

2. Je určitě problém s fontem podmnožiny?

Nemusí to tak být. Podmnožina písem by neměla být jednotně označována jako chyba; stačí si zachovat identifikátory písem a přímo je nehodnocovat jako poškozené.

3. Pokud je seznam fontů prázdný, znamená to, že je problém s stránkou?

Nemusí to tak být. Když je seznam prázdný, nejprve zkontrolujte obsah stránky; stránka může být obrázek nebo jiná kreslící cesta.

4. Může být "bezpečný" výsledek scénáře přímo použit pro překladová rozhodnutí?

Ne. Výstup kódu je pouze technický signál a nemůže určit, zda jsou glyfy cílového jazyka použitelné, ani nemůže posoudit, zda licence umožňuje úpravy embeddingů.

📝 Shrnutí

Inventář písem je zásadní krok před překladem do PDF; pomáhá vám posoudit editovatelnost dokumentu a stabilitu vykreslování. Po obdržení souboru nejprve zkontrolujte písmo, poté vyberte cestu a po překladu stále ověřte shodu mezi názvy, hlavním textem a popisky.

Zkušenost nyní: Nahrajte svůj dokument a začněte s překladem, přičemž zachováte původní formátování

Aktualizováno 2026-11-15