Bookmark and Share
Document Actions

Estrarre dati da file pdf
medio

Esempio di estrazione di dati da un file pdf (con python o jython)

Obiettivi

In più di un'occasione può essere utile ricavare dei dati contenuti in un pdf per catalogarli o per indicizzarne il contenuto. In questa piccola ricetta proporrò una breve soluzione in due differenti "sapori".

Come prima cosa sarà necessario estrarre il testo dal pdf. I file pdf sono composti da una serie di oggetti binari. Abbiamo bisogno di una libreria che riconosca e scompatti per noi gli oggetti di testo.

Come seconda cosa è necessario riconoscere i dati che ci interessano. Per questo obiettivo utilizzeremo la libreria re (regular expression).

Estrazione del testo in Python

In python possiamo utilizzare la libreria pypdf in questo modo (riporto la ricetta presa da qui):

import pyPdf

def getPDFContent(path):
content = ""
# Load PDF into pyPDF
pdf = pyPdf.PdfFileReader(file(path, "rb"))
# Iterate pages
for i in range(0, pdf.getNumPages()):

# Extract text from page and add to content
content += pdf.getPage(i).extractText() + "\n"
# Collapse whitespace
content = " ".join(content.replace(u"\xa0", " ").strip().split())

return content

content = getPDFContent("test.pdf").encode("ascii", "ignore")

Estrazione del testo in jython

Se abbiamo bisogno di lavorare in ambiente java possiamo utilizzare invece jython. La libreria java pdfbox fa al caso nostro:

from org.pdfbox.util import PDFMergerUtility
from org.pdfbox.util import PDFTextStripper
from org.pdfbox.pdmodel import PDDocument
def getPDFContent(path):
    doc=PDDocument.load(pdfpath)
    stripper = PDFTextStripper()

    content = stripper.getText(doc)
    doc.close()
    return content

content = getPDFContent("test.pdf").encode("ascii", "ignore")

Per utilizzare questa libreria sarà necessario caricare alcuni jar (PDFBox-0.7.3.jar e FontBox-0.1.0-dev.jar)

 

Estrarre i dati con le espressioni regolari

Nella libreria standard di python (e jython) abbiamo a disposizione una potentissima libreria per l'utilizzo delle espressioni regolari. Per la documentazione completa si può andare a vedere su http://www.amk.ca/python/howto/regex/, su http://it.diveintopython.org/html_processing/regular_expressions.html o su http://docs.python.it/html/lib/module-re.html

Se ad esempio dobbiamo estrarre dai nostri pdf tutti i codici fiscali possiamo fare:

import re

regexp = r'^[A-Za-z]{6}[0-9]{2}[A-Za-z]{1}[0-9]{2}[A-Za-z]{1}[0-9]{3}[A-Za-z]{1}$'
codici=re.findall(regexp,content)

for codice in codici:
    print codice

Lascio a voi altri esperimenti.
Buon lavoro

by Maurizio Lupo last modified 2009-06-05 15:43
 

Supporto

Ottieni un
aiuto veloce e mirato sul forum, gratis!

partecipa al forum

 

Segui le icone

 

Livelli di difficoltà

livello guruSolo per i "guru"!
livello avanzatoPer configuratori e sviluppatori
livello medioPer chi ha già familiarità
livello basePer tutti!

 

I video

video

Il documento è supportato da un video!