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ší situaci | Doporučené postupy | důvod |
|---|---|---|
| Program písma je prázdný | Záznamy nejsou extrahovány do embedderu a potvrzují situaci na stránce | Base14 reference nerovná se vložené písmo |
| setkat se s podmnožinou písem | Udržujte identitu písma | Podmnožina písem se nerovná poškození |
| Seznam písem je prázdný | Potvrďte obsah stránky | Stránka může být obrázek nebo jiná nakreslená cesta |
| Potřeba zpracovat skutečné soubory | Nejprve zkontrolujte desenzibilizovanými vzorky | Uká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
| pozorovat | co dělat | by nemělo být vyvozováno |
|---|---|---|
| Program písma je prázdný | Záznamy nebyly načteny do embedderu | Citace Base14 se nerovná vložení |
| Písmo Ziji | Zachování značení písma | Poškození není přímo posuzováno |
| Seznam je prázdný | Zkontrolujte obsah stránky | Můž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í


