Perché il PDF a doppia colonna viene estratto in serie? Conserva prima le coordinate e poi parla dell'ordine di lettura

Spiegare che la serializzazione del testo PDF a doppia colonna deriva dalla mancanza di struttura semantica del formato e chiarire che il parametro di ordinamento è solo un ordinamento geometrico. Viene fornito un esempio Python sintetico basato sul partizionamento delle coordinate per dimostrare la logica di riorganizzazione della sequenza, chiarire i limiti applicabili e le linee rosse di revisione manuale e fornire un percorso di accettazione pragmatico che collega il flusso di lavoro di traduzione di OmniDoc.

Le sequenze di testo estratte dai PDF a doppia colonna spesso non vengono riconosciute in modo errato, ma vengono lette nell'ordine sbagliato. Questo articolo è destinato ai lettori che hanno bisogno di estrarre testo da PDF a doppia colonna come documenti e rapporti, e quindi tradurli o organizzarli.

I lettori di solito si trovano di fronte a questa situazione: a metà della colonna di sinistra, la frase successiva è seguita dalla spiegazione della formula nella colonna di destra. I personaggi possono essere tutti riconosciuti correttamente, ma l'ordine è interrotto. Questo articolo spiega innanzitutto il motivo per cui si verifica la serializzazione, quindi utilizza un esempio sintetico per dimostrare come riorganizzare l'ordine partizionando in base alle coordinate. Infine, fornisce i limiti applicabili e l'elenco di accettazione per facilitare la valutazione se può essere utilizzato nei propri file.

Perché il PDF a doppia colonna viene estratto in serie? Conclusione di una frase

Conserva prima le coordinate e la pagina di origine, quindi ordina in base alle regole regionali. Non comprimere direttamente l'intera pagina in una lunga stringa.

la tua situazionePratiche consigliatemotivo
Documento ordinario a due colonne, serializzazione del testoLeggi prima la colonna di sinistra di una sezione, poi leggi la colonna di destraLa giunzione alternata riga per riga distruggerà i paragrafi
Volevo solo provarlo velocementeConfronta i risultati dell'attivazione e disattivazione di sortsort esegue solo l'ordinamento geometrico, adatto per le pagine delle regole
Le pagine hanno titoli su più colonne, note a margine e note a piè di paginaElabora separatamente per regione e controlla le relazioni regionaliL'ordinamento geometrico da solo non può determinare l'attribuzione di questi contenuti.
È necessario consegnare il modello di traduzioneMantieni coordinate e numeri di pagina, organizza prima l'ordine e poi traduciÈ difficile rimediare ai contesti nell’ordine sbagliato anche cambiando il modello.

Perché l'ordine è incasinato?

Il PDF registra la posizione di ciascun paragrafo di testo, non "quale paragrafo è questo e a quale colonna appartiene?" Quando lo strumento di estrazione genera l'output in base alle coordinate, se non sono presenti regole di area, il testo nelle colonne sinistra e destra potrebbe essere interlacciato.

Tali problemi non si presentano necessariamente durante la fase di identificazione. Forse le parole sono tutte menzionate correttamente, ma nell'ordine sbagliato. Pertanto, l’idea di soluzione dovrebbe concentrarsi sull’ordinamento e sulla suddivisione in zone, piuttosto che sulla modifica ripetuta dei collegamenti di riconoscimento o traduzione.

Tieni prima le coordinate e poi parla dell'ordine di lettura

Prima di risolvere il problema dell'ordinamento conservare le coordinate e la pagina di origine del testo. Non affrettarti a comprimere l'intera pagina in un'unica lunga stringa.

  • Conservare le quattro coordinate di ciascun blocco di testo per facilitare il successivo giudizio di proprietà dell'area.
  • Conserva il numero della pagina di origine per facilitare il backtracking e la verifica manuale.
  • Una volta perse le informazioni regionali, le traduzioni successive avranno il contesto sbagliato e la modifica di un modello di traduzione potrebbe non essere in grado di rimediare al problema.

sort=Vale la pena provarlo, ma non è in grado di comprendere il layout

PyMuPDF fornisce diversi moduli di estrazione come testo, parole, blocchi, ecc. L'elaborazione specifica di sort varia in base al tipo e alla versione di output. Non può essere generalmente descritto come un algoritmo di impaginazione fisso, né si può promettere di ripristinare l’ordine di lettura di tutti i documenti.

I suggerimenti per l'uso sono i seguenti:

  • Per la pagina delle regole, puoi prima confrontare i risultati dell'attivazione e disattivazione dell'ordinamento.
  • Per le pagine con titoli su più colonne, note a margine e note a piè di pagina, è necessario verificare nuovamente la relazione tra le aree.
  • Il PDF può contenere tag strutturali, ma ciò non significa che l'interfaccia di estrazione attualmente utilizzata ti fornirà automaticamente l'albero dei paragrafi semantici di cui hai bisogno.

Questo articolo non implementa il riconoscimento universale del layout, ma dimostra solo "come ordinare secondo le regole regionali esistenti" e spiega chiaramente i limiti delle capacità. Per l'interfaccia e il modulo di estrazione, fare riferimento a Guida ufficiale all'estrazione del testo PyMuPDF.

Utilizza cinque blocchi di testo sintetizzati per spiegare il problema

La pagina di esempio è larga 600 punti, con un confine di 300 punti tra le colonne; entro 80 punti dalla parte superiore si trova l'area del titolo a colonne incrociate e sotto c'è l'area di testo. L'input è deliberatamente codificato: il secondo paragrafo nella colonna di destra viene prima e il primo paragrafo nella colonna di sinistra viene per ultimo. Ogni tupla contiene le quattro coordinate del rettangolo e del testo. Si tratta di una struttura semplificata definita a scopo dimostrativo e non equivale al valore restituito completo di get_text("blocks").

Il risultato atteso dovrebbe essere: titolo, primo paragrafo nella colonna di sinistra, secondo paragrafo nella colonna di sinistra, primo paragrafo nella colonna di destra, secondo paragrafo nella colonna di destra. I blocchi di testo che oltrepassano i limiti delle colonne devono entrare nell'elenco delle eccezioni anziché essere tranquillamente scartati o inseriti nella colonna di sinistra.

Un piccolo esempio che può essere eseguito completamente

Gli esempi seguenti utilizzano solo la libreria standard Python. Quando ti connetti a PyMuPDF, puoi mantenere i primi cinque campi dai risultati dell'estrazione dei blocchi ed escludere prima i blocchi non di testo. L'esempio non apre file esterni, non richiede l'OCR e non deduce automaticamente i limiti delle colonne.

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")

I valori 80 e 300 nell'esempio provengono dalle impostazioni di questa pagina composita e non sono soglie empiriche applicabili a tutti i PDF. Quando cambia la larghezza delle colonne sinistra e destra della pagina successiva, se vengono utilizzati i parametri della pagina precedente, potrebbe verificarsi il messaggio "il programma viene eseguito normalmente ma il contenuto è errato". Le regole regionali dovrebbero seguire la pagina, registrando almeno la versione della regola e la dimensione della pagina.

📊 Confronto fondamentale

Metodo di elaborazionecosa si può fareA cosa prestare attenzione
Utilizza direttamente sort=TrueOrdina geometricamente per coordinate; prova prima la pagina delle regoleNon capisco la proprietà dei titoli a ostacoli, delle note laterali e delle note a piè di pagina
Ordina per partizionamento delle coordinatePrima dividi l'area, poi leggi per segmenti per un'ispezione più sempliceLa soglia di partizione dipende dalla pagina e deve essere verificata su base per pagina
Ordine di lettura annotato manualmenteI risultati sono i più controllabili e adatti per verificare i documenti chiaveCostoso elevato, adatto per controlli a punto e benchmarking

Non guardare solo gli errori durante l'accettazione

Elementi di ispezioneCosa dovrebbe essere vistoCosa fare se non soddisfa i requisiti
Ordine regionaleDopo il titolo, prima la barra sinistra completa, poi la barra destra completaControlla le regole di partizione; non affidarti allo scambio di stringhe per patchare la patch
Coerenza nei contenutiIl numero di blocchi accettati più il numero di blocchi rifiutati corrisponde al numero di blocchi di inputConsegna dei blocchi e verifica la presenza di blocchi silenziosi mancanti
Testo principale degli ostacoliAppare nella lista dei rifiutatiAggiungi sezioni ostacoli o giudizio manuale
Rotazione e taglioI blocchi di input e le partizioni utilizzano lo stesso sistema di coordinatePrima unifica le coordinate, poi formula giudizi di inclusione
Intestazioni e note a piè di paginaClassificazione separata secondo le regole di businessNon cancellare tutto il testo in fondo in una volta sola

Nei documenti reali, può comparire anche una struttura di questo tipo: inserire un diagramma a ostacoli al centro e ricominciare la doppia colonna sotto l'immagine. A questo punto, devi prima dividere la pagina in sezioni superiore e inferiore e poi ordinarle separatamente. La partizione monosezione in tre sezioni in questo articolo non è sufficiente. Il layout verticale cinese, il testo da destra a sinistra e le note complesse dei confini non dovrebbero essere usati per leggere le istruzioni qui.

🎯 Quale metodo ti si addice?

Se ......

  • Solo pagine a colonna singola o doppia che devono gestire solo le regole: Prima confronta i risultati dell'abilitazione e chiusura di sort, poi decidi se usare le regole di partizionamento.
  • Gestione di articoli con titoli crossbar, grafici o note a piè di pagina: Dividere le pagine per sezione e impostare liste di eccezioni per i contenuti crossbar.
  • Devi consegnare la traduzione ad altri: Conserva le coordinate e i numeri di pagina, controlla ogni elemento secondo la checklist di accettazione e non limitarti a verificare se l'operazione è un errore.
  • Se non vuoi mantenere gli script da solo: Puoi usare direttamente strumenti di traduzione di documenti pronti e controllare la traduzione con la stessa checklist sequenziale.

Come ricevere il flusso di lavoro di traduzione OmniDoc

Il valore degli script auto-costruiti risiede nel chiaro stabilire regole di accettazione; Il valore degli strumenti di traduzione pronti a lì risiede nella riduzione dei passaggi tra documenti e traduzioni. I due non sono in conflitto. OmniDoc (Voce prodotto) offre un portale di traduzione documenti e il sito ufficiale introduce anche funzionalità come OCR, terminologia e confronto bilingue. Puoi selezionare un elaborato desensibilizzato con il diritto di caricare e controllare la traduzione usando lo stesso insieme di liste di controllo.

I controlli chiave includono:

  • Controlla se la frase iniziale dopo il titolo dell'ostacolo è collegata.
  • Le didascalie sono state unite al testo principale?
  • Verificare se i riferimenti delle note corrispondono ancora alle posizioni corrette.

Si tratta di valutare i risultati di consegna, non di inferire gli algoritmi interni di OmniDoc. Se il risultato non soddisfa i requisiti, si prega di mantenere la pagina originale e la sezione errore, prima di identificare se il problema riguarda l'identificazione, l'ordinamento o la traduzione, e poi decidere come correggerlo.

❓ Domande Frequenti (FAQ)

1. Serial PDF a doppia colonna — viene identificato erroneamente?

Non necessariamente. Tutti i caratteri possono essere riconosciuti correttamente; i problemi spesso risiedono nell'ordine di lettura, quindi dovresti prima controllare le regole di ordine e area.

2. sort=True: Potete risolvere direttamente il problema dell'ordine a doppia colonna?

Non può essere generalizzato. La gestione di sort varia a seconda del tipo di output e della versione. Non è una comprensione del layout e non può promettere di ripristinare l'ordine di lettura di tutti i documenti. Per le pagine delle regole, puoi provare prima; per le pagine con contenuti trasversali, devi anche controllare le relazioni regionali.

3. Perché non puoi comprimere l'intera pagina in una lunga stringa?

Una volta che coordinate e informazioni sull'area si perdono, le traduzioni successive generano solo contesto sconnesso e anche un modello di traduzione diverso potrebbe non essere in grado di correggerlo.

4. Gli 80 e i 300 punti nell'esempio possono essere applicati direttamente ad altri PDF?

No. Queste sono solo impostazioni per questa pagina composita. Quando la dimensione della pagina o la larghezza della colonna cambiano, la versione della regola dovrebbe essere verificata e registrata separatamente per ogni pagina.

📝 Riassunto

Per le emissioni di ordine PDF a doppia colonna, le coordinate e le pagine sorgente dovrebbero essere preservate prima, poi gestite con regole regionali e ogni elemento verificato secondo la checklist di accettazione. Gli script auto-costruiti sono adatti per scrivere regole in modo chiaro, mentre gli strumenti pronti a l'uso sono migliori per ridurre i passaggi operativi; entrambi possono essere usati insieme.

Esperienza ora: carica il tuo documento per iniziare a tradurre, mantenendo la formattazione originale

Aggiornato il 2026-11-13