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ší situaciDoporučené postupydůvod
Obyčejný dvousloupcový papír, serializace textuNejprve si přečtěte levý sloupec oddílu a poté pravý sloupecStřídání řádků po řádcích zničí odstavce
Chtěl jsem to jen rychle vyzkoušetPorovnejte výsledky zapnutí a vypnutí sortsort 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 čarouZpracovávejte samostatně podle krajů a kontrolujte regionální vztahySamotné geometrické třídění nemůže určit přiřazení těchto obsahů.
Nutno předat překladové předlozeZachovejte souřadnice a čísla stránek, nejprve uspořádejte objednávku a poté překládejteKontexty 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ělatNa co si dát pozor
Použijte sort=True přímoProveď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íluNejprve 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žkyCo vidětCo dělat, když se neshoduje
Oblastní pořadíZa nadpisem nejprve úplný levý sloupec, poté úplný pravý sloupecZkontrolujte pravidla oddílu a neprovádějte opravy změnou řetězců
zachování obsahuPoč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 pruhuse 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říznoutVstupní blok používá stejný souřadnicový systém jako oddílNejprve sjednoťte souřadnice a poté proveďte úsudek o zařazení
Záhlaví, zápatíSamostatně kategorizováno podle obchodních pravidelNemazat 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í sort a 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í

Aktualizováno 2026-11-13