Ottieni testo sottolineato da qualsiasi PDF con Python |  di Sasha Korovkina |  Maggio 2024

 | Intelligenza-Artificiale

Una guida passo passo per ottenere il testo sottolineato come array dai file PDF.

💡 Se vuoi vedere il codice per questo progetto, controlla il mio repository: https://github.com/sasha-korovkina/pdfUnderlinedExtractor

L'estrazione dei dati dai PDF può essere un vero grattacapo e diventa ancora più complicata quando si tenta di catturare il testo sottolineato: che ci crediate o no, non esistono soluzioni o librerie di riferimento che gestiscano questa operazione immediatamente. Ma non preoccuparti, sono qui per mostrarti come affrontare questo problema.

fotografato da dlxmedia.hu SU Unsplash

La teoria

L'estrazione del testo sottolineato dai PDF può richiedere diversi percorsi. Potresti prendere in considerazione l'utilizzo dell'OCR per rilevare componenti di testo con profitti o approfondire le funzionalità di markup di PyMuPDF. Tuttavia, ho scoperto che l'OCR tende a vacillare, soffrendo di incoerenza e bassa precisione. PyMuPDF non è nemmeno il mio preferito: richiede una meticolosa regolazione dei parametri, che richiede molto tempo. Inoltre, un'impostazione sbagliata e potresti perdere un sacco di dati.

È importante ricordare che i PDF sono:

  • Dati non strutturati: Gli elementi PDF spesso non sono raggruppati o categorizzati, il che complica gli sforzi di ricerca sistematica nel contenuto.
  • Riconoscimento della formattazione del testo: Rilevare formati di testo specifici come grassetto o sottolineato è notoriamente difficile nei PDF, poiché la maggior parte delle librerie Python non supporta questa funzionalità in modo efficace.

Ma non temere, poiché abbiamo una strategia per risolvere questo problema.

La strategia

  • Converti il ​​PDF in XML strutturato: inizia trasformando il documento PDF in un formato XML strutturato per facilitare la manipolazione dei dati.
  • Estrai i componenti desiderati: identifica e isola i componenti specifici dall'XML che sono rilevanti per le nostre esigenze.
  • Utilizza l'OCR (riconoscimento ottico dei caratteri) sulle coordinate estratte per ottenere i dati di testo sottolineati come un array.
  • Estrai e genera testo sottolineato: infine, estrai il testo sottolineato dal documento e visualizza o stampa i risultati.

Il codice

  1. Da PDF a XML

Utilizzeremo il pdfquery libreria, il convertitore da PDF a XML più completo che abbia mai incontrato.

2. Studiare l'XML

L'XML ha alcuni componenti chiave che ci interessano:

  • LTRect — a volte, la libreria analizza il testo sottolineato come un rettangolo di larghezza minima sotto il testo
  • LTLine — altre volte, riconoscerebbe il contorno come un componente di linea separato.
Ecco come apparirà il tuo XML di output. Immagine creata dall'autore.

Esempio del componente LTRect:

<LTRect y0="563.787" y1="629.964" x0="367.942" x1="473.826" width="105.884" height="66.178" bbox="(367.942, 563.787, 473.826, 629.964)" linewidth="0" pts="((367.942, 629.964), (473.826, 629.964), (473.826, 563.787), (367.942, 563.787))">

Pertanto, convertendo l'intero documento in formato XML, possiamo replicare la sua struttura come componenti XML, facciamo proprio questo!

Replica della struttura

Ora ricreeremo la struttura del nostro documento come coordinate del riquadro di delimitazione. Per fare ciò, analizzeremo l'XML per definire la pagina, i riquadri dei componenti, le linee e i rettangoli, quindi disegneremo il tutto sulla nostra tela in 3 colori diversi.

Visualizzazione di oggetti PDF.

Ecco il nostro PDF iniziale, è stato generato in Microsoft Word, esportando un documento con alcune sottolineature nel formato file PDF:

Documento iniziale con testo di esempio. Immagine creata dall'autore.

Dopo aver applicato l'algoritmo sopra, ecco la rappresentazione visiva che otteniamo:

Il contorno della casella del documento Nero: tutti i componenti del documento, blu: testo sottolineato. Immagine creata dall'autore.

Questa immagine rappresenta la struttura del nostro documento, dove la scatola nera è usata per descrivere tutti i componenti della pagina, e quella blu è usata per descrivere gli elementi LTRect, da qui il testo sottolineato.

Sovrapposizione di testo

Ora visualizziamo tutto il testo all'interno del PDF nelle rispettive posizioni, con la seguente riga di codice:

can.drawString(text_x, text_y, text)

Ecco l'output:

Ricreazione di PDF in base alla posizione del testo e alle sottolineature. Immagine creata dall'autore.

Tieni presente che il testo non è esattamente dove si trovava nel documento originale, a causa della differenza di dimensioni e carattere del linguaggio di markup nella libreria pdfquery.

Estrazione coordinata

Come risultato del nostro XML, avremo un array di coordinate delle regioni sottolineate, nel mio caso l'ho chiamato underline_text.

Un pezzo di codice che forma una serie di coordinate di testo sottolineato all'interno del file PDF.

Estrazione del testo

Ecco il processo:

  1. Identifichiamo i rettangoli di coordinate come precedentemente determinato.
  2. Estraiamo queste sezioni dal PDF.
  3. Applichiamo Tesseract OCR per estrarre il testo da ciascuna sezione estratta.

Questo metodo per estrarre testo dai PDF utilizzando rettangoli di coordinate e Tesseract OCR è efficace per diversi motivi:

  1. Precisione nell'estrazione del testo: identificando specifici rettangoli di coordinate, il processo prende di mira solo le aree rilevanti del PDF. Questo approccio mirato evita l'elaborazione non necessaria dell'intero documento e riduce gli errori legati all'estrazione del testo indesiderato.
  2. Efficienza: L'estrazione delle sezioni predefinite direttamente dal PDF è molto più veloce dell'elaborazione dell'intero documento. Questo metodo consente di risparmiare tempo e risorse di calcolo, particolarmente utile quando si ha a che fare con documenti di grandi dimensioni.
  3. Precisione con OCR: Tesseract OCR è un robusto strumento di riconoscimento ottico dei caratteri in grado di convertire immagini di testo in testo leggibile dalla macchina. Alimentando sezioni precise di testo, può funzionare in modo più accurato poiché gestisce meno rumore di fondo e problemi di formattazione che potrebbero confondere il processo OCR in documenti più grandi e non segmentati.

E questo è il codice:

Codice per estrarre il testo sottolineato dalle sezioni PDF.

Assicurati di aver tesseract installato sul tuo sistema prima di eseguire questa funzione. Per istruzioni approfondite, consulta la guida di installazione ufficiale qui: https://github.com/tesseract-ocr/tessdoc/blob/main/Installation.md o nel mio repository GitHub qui: https://github.com/sasha-korovkina/pdfUnderlinedExtractor.

Mettere tutto insieme…

Ora, se prendiamo un file PDF, come questo file di esempio:

L'intero testo del file di prova. Immagine creata dall'autore.

Abbiamo alcune parole sottolineate in questo file:

ipsum e laboris sono qui sottolineati. Immagine creata dall'autore.

Dopo aver eseguito il codice sopra descritto, ecco cosa otteniamo:

Un array di tutte le parole sottolineate nel documento. Immagine creata dall'autore.

Dopo aver ottenuto questo array, puoi utilizzare queste parole per ulteriori elaborazioni!

Divertiti a usare questo script! Mi piacerebbe conoscere eventuali applicazioni creative che ti vengono in mente o se desideri contribuire. Fammi sapere! ❤️

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *