Proč je dvousloupcové PDF extrahováno sériově? Nejdříve si ponechte souřadnice a pak mluvte o pořadí čtení
Vysvětlete, že serializace textu PDF ve dvou sloupcích pochází z nedostatku sémantické struktury formátu, objasněte, že parametr řazení je pouze geometrickým řazením. Je poskytnut syntetický příklad Pythonu založený na dělení souřadnic, který demonstruje logiku reorganizace sekvencí, objasňuje použitelné hranice a červené linie ruční kontroly a poskytuje pragmatickou cestu přijetí, která propojuje pracovní postup překladu OmniDoc.
Textové sekvence extrahované z dvousloupcových PDF často nejsou rozpoznány nesprávně, ale jsou čteny v nesprávném pořadí. Tento článek je určen pro čtenáře, kteří potřebují extrahovat text z dvousloupcových PDF, jako jsou články a zprávy, a poté je přeložit nebo uspořádat.
Čtenáři se obvykle setkávají s touto situací: v polovině levého sloupce následuje za další větou vysvětlení vzorce v pravém sloupci. Postavy mohou být všechny rozpoznány správně, ale pořadí je narušeno. Tento článek nejprve vysvětluje, proč k serializaci dochází, a poté na syntetickém příkladu demonstruje, jak reorganizovat pořadí rozdělením podle souřadnic. Nakonec uvádí platné hranice a seznam přijatelnosti, který vám usnadní posouzení, zda jej lze použít ve vašich vlastních souborech.
Proč je dvousloupcové PDF extrahováno sériově? Závěr jednou větou
Nejprve si ponechte souřadnice a zdrojovou stránku a poté seřaďte podle regionálních pravidel. Nekomprimujte přímo celou stránku do dlouhého řetězce.
| vaší situaci | Doporučené postupy | důvod |
|---|---|---|
| Obyčejný dvousloupcový papír, serializace textu | Nejprve si přečtěte levý sloupec oddílu a poté pravý sloupec | Střídání řádků po řádcích zničí odstavce |
| Chtěl jsem to jen rychle vyzkoušet | Porovnejte výsledky zapnutí a vypnutí sort | sort provádí pouze geometrické třídění, vhodné pro stránky pravidel |
| Stránky mají nadpisy napříč sloupci, postranní poznámky a poznámky pod čarou | Zpracovávejte samostatně podle krajů a kontrolujte regionální vztahy | Samotné geometrické třídění nemůže určit přiřazení těchto obsahů. |
| Nutno předat překladové předloze | Zachovejte souřadnice a čísla stránek, nejprve uspořádejte objednávku a poté překládejte | Kontexty ve špatném pořadí se obtížně napravují i změnou modelu. |
Proč je objednávka zmatená?
PDF zaznamenává pozici každého odstavce textu, nikoli "který odstavec je tento a do kterého sloupce patří?" Když je výstup nástroje pro extrakci podle souřadnic a neexistují žádná pravidla oblasti, text v levém a pravém sloupci může být prokládaný.
Takové problémy nemusí nutně nastat během fáze identifikace. Možná jsou všechna slova uvedena správně, ale ve špatném pořadí. Proto by se myšlenka řešení měla zaměřit na třídění a zónování, spíše než na opakované změny rozpoznávacích nebo překladových odkazů.
Nejprve si ponechte souřadnice a pak mluvte o pořadí čtení
Před vyřešením objednávkového problému zachovejte souřadnice a stránku původu textu. Nespěchejte s komprimací celé stránky do jednoho dlouhého řetězce.
- Zachovejte čtyři souřadnice každého textového bloku, abyste usnadnili následné posouzení vlastnictví oblasti.
- Ponechejte si číslo zdrojové stránky, abyste usnadnili zpětné sledování a ruční ověření.
- Jakmile dojde ke ztrátě regionálních informací, další překlady získají nesprávný kontext a změna překladového modelu nemusí být schopna tento problém napravit.
sort=True stojí za vyzkoušení, ale není to pro rozvržení
PyMuPDF poskytuje různé formy extrakce, jako je text, slova, bloky atd. Specifické zpracování sort se liší podle typu a verze výstupu. Nelze jej obecně popsat jako pevný sázecí algoritmus ani nelze slíbit, že obnoví pořadí čtení všech dokumentů.
Doporučení pro použití jsou následující:
- U stránky pravidel můžete nejprve porovnat výsledky zapnutí a vypnutí řazení.
- U stránek s názvy napříč sloupci, postranními poznámkami a poznámkami pod čarou je nutné znovu zkontrolovat vztah oblasti.
- PDF může obsahovat strukturální značky, ale to neznamená, že aktuálně používané extrakční rozhraní vám automaticky poskytne sémantický strom odstavců, který potřebujete.
Tento článek neimplementuje univerzální rozpoznávání rozložení, ale pouze demonstruje „jak řadit podle existujících regionálních pravidel"a jasně vysvětluje hranice možností. Rozhraní a formulář pro extrakci naleznete v Oficiální průvodce extrakce textu PyMuPDF.
K vysvětlení problému použijte pět syntetizovaných textových bloků
Vzorová stránka je široká 600 bodů a mezi sloupci je hranice 300 bodů; do 80 bodů od horní části je oblast nadpisu křížového sloupce a pod ní je oblast textu. Vstup je záměrně zakódován: druhý odstavec v pravém sloupci je na prvním místě a první odstavec v levém sloupci je na posledním místě. Každá n-tice obsahuje čtyři souřadnice obdélníku a text. Toto je zjednodušená struktura definovaná pro demonstrační účely a není ekvivalentní plné návratové hodnotě get_text("blocks").
Očekávaný výsledek by měl být: nadpis, první odstavec v levém sloupci, druhý odstavec v levém sloupci, první odstavec v pravém sloupci, druhý odstavec v pravém sloupci. Bloky textu, které překračují hranice sloupců, musí být zařazeny do seznamu výjimek, místo aby byly potichu vyřazeny nebo přesunuty do levého sloupce.
Malý příklad, který lze úplně spustit
Následující příklady používají pouze standardní knihovnu Pythonu. Při připojování k PyMuPDF si můžete ponechat prvních pět polí z výsledků extrakce bloků a nejprve vyloučit netextové bloky. Příklad neotevírá externí soubory, nevyžaduje OCR a automaticky neodvozuje hranice sloupců.
def order_known_layout(blocks, split_x=300, title_bottom=80):
groups = {"title": [], "left": [], "right": []}
rejected = []
for block in blocks:
x0, y0, x1, y1, text = block
if x1 <= x0 or y1 <= y0:
rejected.append(block)
continue
if y1 <= title_bottom:
region = "title"
elif y0 < title_bottom:
rejected.append(block)
continue
elif x1 <= split_x:
region = "left"
elif x0 >= split_x:
region = "right"
else:
rejected.append(block)
continue
groups[region].append(block)
ordered = []
for region in ("title", "left", "right"):
ordered.extend(sorted(groups[region], key=lambda b: (b[1], b[0])))
return [b[4] for b in ordered], rejected
sample = [(330, 160, 550, 190, "R2"), (40, 100, 270, 130, "L1"),
(40, 20, 550, 50, "TITLE"), (330, 100, 550, 130, "R1"),
(40, 160, 270, 190, "L2")]
ordered, rejected = order_known_layout(sample)
assert ordered == ["TITLE", "L1", "L2", "R1", "R2"]
assert rejected == []
wide = (40, 220, 550, 250, "FULL WIDTH BODY")
assert order_known_layout(sample + [wide])[1] == [wide]
assert order_known_layout([]) == ([], [])
print("known-layout examples: 3 assertions passed")
80 a 300 v příkladu pocházejí z nastavení na této složené stránce a nejsou empirickými prahovými hodnotami, které platí pro všechny soubory PDF. Při změně šířky levého a pravého sloupce další stránky, pokud jsou použity parametry předchozí stránky, může dojít k "programu běží normálně, ale obsah je chybný". Regionální pravidla by měla následovat po stránce, zaznamenat alespoň verzi pravidla a velikost stránky.
📊 Srovnání jádra
| Způsob zpracování | co se dá dělat | Na co si dát pozor |
|---|---|---|
Použijte sort=True přímo | Proveďte geometrické řazení podle souřadnic. Nejprve si to můžete vyzkoušet na stránce pravidel. | Nerozumím vlastnictví názvů napříč sloupci, vedlejších poznámek a poznámek pod čarou |
| Seřadit na základě souřadnicového oddílu | Nejprve rozdělte oblast a poté si přečtěte část, abyste usnadnili kontrolu. | Prahová hodnota oddílu závisí na stránce a musí být ověřena na základě stránky. |
| Ručně anotované pořadí čtení | Výsledek je nejlépe kontrolovatelný a vhodný pro ověřování klíčových dokumentů | Vysoká cena, vhodná pro namátkové kontroly a benchmarky |
Nekontrolujte pouze, zda během přijímání nedošlo k nějakým chybám
| Zkontrolujte položky | Co vidět | Co dělat, když se neshoduje |
|---|---|---|
| Oblastní pořadí | Za nadpisem nejprve úplný levý sloupec, poté úplný pravý sloupec | Zkontrolujte pravidla oddílu a neprovádějte opravy změnou řetězců |
| zachování obsahu | Počet přijatých bloků plus počet odmítnutých bloků se rovná počtu vstupních bloků | Zablokujte doručení a zkontrolujte, zda nedošlo ke ztrátě tichého bloku |
| Text křížového pruhu | se objeví na seznamu odmítnutí | Přidejte novou překážkovou sekci nebo ji předložte k ručnímu posouzení |
| Otočit a oříznout | Vstupní blok používá stejný souřadnicový systém jako oddíl | Nejprve sjednoťte souřadnice a poté proveďte úsudek o zařazení |
| Záhlaví, zápatí | Samostatně kategorizováno podle obchodních pravidel | Nemazat veškerý spodní text |
Skutečný papír může mít také strukturu jako je tato: doprostřed vložte křížový sloupec a pod obrázek restartujte dvojité sloupce. V tuto chvíli je potřeba stránku nejprve rozdělit na horní a dolní část a poté ji seřadit samostatně. Jednorázové tři skupiny oddílů v tomto článku nestačí. Směr čtení zde by neměl být aplikován na čínské vertikální rozložení, text zprava doleva a složité marginálie.
🎯 Která metoda je pro vás vhodná?
pokud jste……
- Pouze stránky s jedním nebo dvěma sloupci, které potřebují zpracovat pravidla: Nejprve porovnejte výsledky zapnutí a vypnutí
sorta poté se rozhodněte, zda jsou potřeba pravidla rozdělení. - Zacházení s papíry s rozloženými názvy, obrázky nebo poznámkami pod čarou: Rozdělte stránky podle oddílů a nastavte seznamy výjimek pro rozložený obsah.
- Překlad je třeba doručit ostatním: Ponechte si souřadnice a čísla stránek a postupně je kontrolujte podle akceptačního seznamu. Nekontrolujte pouze, zda během operace nedochází k chybám.
- Nechcete sami udržovat skripty: Můžete přímo použít hotové nástroje pro překlad dokumentů a zkontrolovat překlad pomocí stejné sady postupných kontrolních seznamů.
Jak získat proces překladu OmniDoc
Hodnota samostatně vytvořených skriptů spočívá v jasném napsání pravidel přijímání; hodnota hotových překladatelských nástrojů spočívá ve snížení provozních vazeb mezi soubory a překlady. Mezi těmito dvěma neexistuje žádný konflikt. OmniDoc (produktový portál) poskytuje portál pro překlad dokumentů a oficiální webové stránky také zavádějí funkce, jako je OCR, glosář a dvojjazyčné srovnání. Můžete si vybrat papír se sníženou citlivostí, ke kterému máte oprávnění nahrát, a zkontrolovat překlad pomocí stejného postupného kontrolního seznamu.
Zaměřte se na kontrolu následujících položek:
- Zda je první věta za nadpisem křížového sloupce správně připojena.
- Byly popisky obrázků začleněny do textu?
- Zda se odkazy na poznámky pod čarou stále mapují na správné místo.
Jedná se o vyhodnocování výstupů, nikoli o odvozování interních algoritmů OmniDoc. Pokud výsledky nesplňují požadavky, ponechte si prosím původní stránku a chybovou část, nejprve zjistěte, zda problém spočívá v procesu rozpoznávání, řazení nebo překladu, a poté se rozhodněte, jak jej opravit.
❓ Často kladené otázky (FAQ)
1. Dvousloupcový seriál PDF, není správně rozpoznán?
nejistý. Všechna slova mohou být rozpoznána správně, ale problém často spočívá v pořadí čtení, proto je třeba nejprve zkontrolovat řazení a regionální pravidla.
2. Může sort=True přímo vyřešit problém pořadí dvou sloupců?
Nelze to paušalizovat. Manipulace s sort se liší podle typu a verze výstupu, nejde o rozvržení a nemůže slíbit, že obnoví pořadí čtení všech dokumentů. Nejprve můžete vyzkoušet stránku s pravidly a také je třeba zkontrolovat regionální vztah u stránek s obsahem napříč sloupci.
3. Proč nelze celou stránku zkomprimovat do dlouhého řetězce?
Jakmile dojde ke ztrátě souřadnic a informací o oblasti, další překlady získají nesprávný kontext a změna modelu překladu nemusí být schopna tento problém napravit.
4. Lze 80 bodů a 300 bodů v příkladu použít přímo na jiné soubory PDF?
nemůže. Jsou to pouze nastavení pro tuto složenou stránku. Když se změní velikost stránky nebo šířka sloupce, verze pravidla by měla být ověřena a zaznamenána samostatně pro každou stránku.
📝 Shrnutí
V případě problémů s objednávkami v souborech PDF se dvěma sloupci by měly být nejprve zachovány souřadnice a zdrojové stránky, poté zpracovány pomocí regionálních pravidel a zkontrolovány položku po položce podle kontrolního seznamu pro přijetí. Vlastní skripty jsou vhodné pro srozumitelné psaní pravidel a hotové nástroje jsou vhodné pro snižování provozních vazeb. Oba lze použít společně.
Vyzkoušejte to hned: Nahrajte dokument a začněte překládat při zachování původního rozvržení


