it-swarm.dev

Come estrarre testo con OCR da un PDF su Linux?

Come estrarre il testo da PDF che non è stato creato con un indice? È tutto testo, ma non posso cercare o selezionare nulla. Sto usando Kubuntu e Okular non ha questa caratteristica.

41
hsribei

Ho avuto successo con la porta Linux con licenza BSD di Cuneiform sistema OCR.

Nessun pacchetto binario sembra essere disponibile, quindi è necessario crearlo dal sorgente. Assicurarsi di avere le librerie ImageMagick C++ installate per supportare sostanzialmente qualsiasi formato di immagine di input (altrimenti accetterà solo BMP).

Anche se sembra sostanzialmente non documentato a parte un breve README file, ho trovato i risultati OCR piuttosto buoni. La cosa bella è che può fornire informazioni sulla posizione per il testo OCR nel formato hOCR , così che diventa possibile inserire di nuovo il testo in la posizione corretta in un livello nascosto di un file PDF. In questo modo puoi creare PDF "ricercabili" dai quali copiare il testo.

Ho usato hocr2pdf per ricreare PDF fuori dai risultati originali PDF di immagini e OCR. Purtroppo, il programma non sembra supportare la creazione di PDF multipagina, quindi potrebbe essere necessario creare uno script per gestirli:

#!/bin/bash
# Run OCR on a multi-page PDF file and create a new pdf with the
# extracted text in hidden layer. Requires cuneiform, hocr2pdf, gs.
# Usage: ./dwim.sh input.pdf output.pdf

set -e

input="$1"
output="$2"

tmpdir="$(mktemp -d)"

# extract images of the pages (note: resolution hard-coded)
gs -SDEVICE=tiffg4 -r300x300 -sOutputFile="$tmpdir/page-%04d.tiff" -dNOPAUSE -dBATCH -- "$input"

# OCR each page individually and convert into PDF
for page in "$tmpdir"/page-*.tiff
do
    base="${page%.tiff}"
    cuneiform -f hocr -o "$base.html" "$page"
    hocr2pdf -i "$page" -o "$base.pdf" < "$base.html"
done

# combine the pages into one PDF
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$output" "$tmpdir"/page-*.pdf

rm -rf -- "$tmpdir"

Si prega di notare che lo script di cui sopra è molto rudimentale. Ad esempio, non conserva alcun metadata PDF.

25
Jukka Matilainen

Vedi se pdftotext funzionerà per te. Se non è sul tuo computer, dovrai installare il pacchetto poppler-utils

Sudo apt-get install poppler-utils 

Potresti anche trovare il pdf toolkit di utilizzo.

Una lista completa di software pdf qui su wikipedia.

Modifica: Dato che tu hai bisogno di funzionalità OCR, penso che dovrai provare una virata diversa. (Io non sono riuscito a trovare un convertitore linux pdf2text che faccia OCR).

  • Converti il ​​pdf in un'immagine
  • Scansiona l'immagine in testo usando gli strumenti OCR

Converti pdf in immagine

  • gs: Il comando below dovrebbe convertire il pdf multipagina in singoli file tiff.

    gs -SDEVICE = tiffg4 -r600x600 -sPAPERSIZE = letter -sOutputFile = filename_% 04d.tif -dNOPAUSE -dBATCH - filename

  • Utilità ImageMagik : ci sono altre domande sul sito SuperUser sull'utilizzo di ImageMagik che potresti usare per aiutarti a fare la conversione.

    converti foo.pdf foo.png

Converti l'immagine in testo con OCR

Tratto dall'elenco di Wikipedia del software OCR

13
nagul

Google docs will now usa OCR per convertire i tuoi documenti immagine/pdf caricati al testo. Ho avuto un buon successo con esso.

Stanno usando il sistema OCR utilizzato per il gigantesco progetto Google Books .

Tuttavia, si deve notare che solo i PDF fino a una dimensione di 2 MB saranno accettati per l'elaborazione.

Update
1. Per provarlo, carica un <2MB pdf in google docs da un browser web.
2. Fai clic con il tasto destro sul documento caricato e fai clic su "Apri con Google Documenti".
... Google Docs verrà convertito in testo e stampato in un nuovo file con lo stesso nome, ma Google Documenti nella stessa cartella.

11
Russ

Geza Kovacs ha creato un pacchetto Ubuntu che è fondamentalmente uno script che usa hocr2pdf come suggerito da Jukka, ma rende le cose un po 'più veloci da configurare.

Dal post del forum di Geza su Ubuntu con dettagli sul pacchetto ...

Aggiunta del repository e installazione in Ubuntu

Sudo add-apt-repository ppa:gezakovacs/pdfocr
Sudo apt-get update
Sudo apt-get install pdfocr

Esecuzione di ocr su un file

pdfocr -i input.pdf -o output.pdf

Repository GitHub per il codice https://github.com/gkovacs/pdfocr/

2
ryanjdillon

PDFBeads funziona bene per me. Questo thread " Converti immagini scansionate in un singolo PDF File " mi ha installato e funzionante. Per una scansione di libri in bianco e nero, è necessario:

  1. Crea un'immagine per ogni pagina del PDF; uno degli esempi gs sopra dovrebbe funzionare
  2. Genera output hOCR per ogni pagina; Ho usato tesseract (ma nota che Cuneiform sembra funzionare meglio).
  3. Spostare le immagini e i file hOCR in una nuova cartella; i nomi dei file devono corrispondere, quindi file001.tif richiede file001.html, file002.tif file002.html, ecc.
  4. Nella nuova cartella, esegui

    pdfbeads * > ../Output.pdf
    

Ciò inserirà il collato, OCR'd PDF nella directory superiore.

1
scruss

un altro script usando tesseract:

#!/bin/bash
# Run OCR on a multi-page PDF file and create a txt with the
# extracted text in hidden layer. Requires tesseract, gs.
# Usage: ./pdf2ocr.sh input.pdf output.txt

set -e

input="$1"
output="$2"

tmpdir="$(mktemp -d)"

# extract images of the pages (note: resolution hard-coded)
gs -SDEVICE=tiff24nc -r300x300 -sOutputFile="$tmpdir/page-%04d.tiff" -dNOPAUSE -dBATCH -- "$input"

# OCR each page individually and convert into PDF
for page in "$tmpdir"/page-*.tiff
do
    base="${page%.tiff}"
    tesseract "$base.tiff" $base
done

# combine the pages into one txt
cat "$tmpdir"/page-*.txt > $output

rm -rf -- "$tmpdir"
1
tolima

Il modo migliore e più semplice per utilizzare pypdfocr non cambia il pdf

pypdfocr your_document.pdf

Alla fine avrai un altro your_document_ocr.pdf nel modo in cui lo vuoi con testo ricercabile. L'app non cambia la qualità dell'immagine. Aumenta leggermente la dimensione del file aggiungendo il testo di sovrapposizione.

Aggiornamento 3 novembre 2018:

pypdfocr non è più supportato dal 2016 e ho notato alcuni problemi a causa del mancato mentoring. ocrmypdf ( module ) fa un lavoro simile e può essere usato in questo modo:

ocrmypdf in.pdf out.pdf

Installare:

pip install ocrmypdf

o

apt install ocrmypdf
1

Asprise OCR Library funziona sulla maggior parte delle versioni di Linux. Può richiedere PDF input e output come ricerca PDF.

È un pacchetto commerciale. Scarica una copia gratuita di Asprise OCR SDK per Linux qui ed eseguila in questo modo:

aocr.sh input.pdf pdf

Nota: il 'pdf' standalone specifica il formato di output.

Disclaimer: sono un dipendente dell'azienda che produce il prodotto sopra.

1
Asprise Support

Prova Apache PDFBox per estrarre il contenuto di testo da PDF File. In caso di immagini incorporate in PDF i file utilizzano CLI di ABBYY FineReader Engine per Linux per estrarre il testo.

0