2010-08-31 5 views
8

Ho diversi pdf di bassa qualità. Vorrei usare OCR - per essere più precisi Ocropus per ottenere il testo da loro. Per fare uso, io uso prima ImageMagick - uno strumento da riga di comando per convertire il pdf in immagini - per trasformare questi pdf in jpg o png.Quali sono i migliori parametri per eseguire ImageMagick per convertire pdf di bassa qualità in immagini (per OCR)

Tuttavia, ImageMagick produce immagini di qualità molto bassa e Ocropus non riconosce quasi nulla. Vorrei sapere quali sono i parametri migliori per la gestione di file PDF di bassa qualità per fornire immagini di qualità ottimale all'OCR.

Ho trovato this page, ma non so da dove iniziare.

risposta

14

È possibile conoscere le impostazioni dettagliate "delegati" di ImageMagick (programmi esterni usi IM, come Ghostscript) digitando

convert -list delegate 

(Sul mio sistema che è un elenco di 32 differenti comandi). Ora per vedere quali comandi sono utilizzati per convertire in PNG, utilizzare questo:

convert -list delegate | findstr /i png 

Ok, questo era per Windows. Non hai detto quale sistema operativo utilizzi. [*] Se siete su Linux, provate questo:

convert -list delegate | grep -i png 

Scoprirete che IM non produce PNG solo dal PS o EPS di ingresso. In che modo IM ottiene (E) PS dal tuo PDF? Facile:

convert -list delegate | findstr /i PDF 
convert -list delegate | grep -i PDF 

Ah! Usa Ghostscript per fare una conversione PDF => PS, quindi usa di nuovo Ghostscript per creare una conversione PS => PNG. Funziona, ma non è il modo più efficiente se sai che Ghostscript può fare PDF => PNG in uno go. E più veloce. E con una qualità molto migliore.

Informazioni sulla gestione di IM di conversione PDF per le immagini tramite il delegato Ghostscript si deve sapere due cose prima di tutto:

  1. Per impostazione predefinita, se non si danno un parametro in più, Ghostscript immagini di uscita con una risoluzione di 72 dpi. Ecco perché la risposta di Karl ha suggerito di aggiungere -density 600 che dice a Ghostscript di usare una risoluzione di 600 dpi per l'output dell'immagine.
  2. La deviazione di IM per chiamare Ghostscript due volte per convertire il primo PDF => PS e quindi PS => PNG è un vero errore. Perché tu mai vinci e harldy mantieni la qualità nel primo passaggio, ma molto spesso perdi un po '. Motivi:
    • PDF in grado di gestire i lucidi, che PostScript non può.
    • PDF può incorporare tipi di carattere TrueType, che Ghostscript non può. etc.pp. La conversione nella direzione PS => PDF non è così importante ....)

Ecco perché io suggerirei a convertire i file PDF in una sola volta in PNG (o JPEG) utilizzando direttamente Ghostscript. E usa lo most recent version 8.71 (presto rilasciato: 9,01) di Ghostscript! Qui ci sono i comandi di esempio:

gswin32c.exe^
    -sDEVICE=pngalpha^
    -o output/page_%03d.png^
    -r600^
    d:/path/to/your/input.pdf 

(. Questa è la riga di comando per Windows su Linux, utilizzare gs invece di gswin32c.exe, e \ invece di ^.) Questo comando si aspetta di trovare una output sottodirectory dove memorizzerà un separato file per ogni pagina PDF. Per produrre JPEG di buona qualità, prova

gs \ 
    -sDEVICE=jpeg \ 
    -o output/page_%03d.jpeg \ 
    -r600 \ 
    -dJPEGQ=95 \ 
    /path/to/your/input.pdf 

(versione comando Linux). Questa conversione diretta evita il formato PostScript intermedio, che potrebbe aver perso il carattere TrueType e le informazioni dell'oggetto trasparenza presenti nel file PDF originale.


[*] D'oh! Mi mancava di vedere il tag "linux" in un primo momento ...

5

-density 600 o così dovrebbe darti quello che ti serve.

0

Almeno due altri strumenti si può prendere in considerazione:

  • pdfimages, che viene fornito con il pacchetto poppler-utils, rende facile estrarre il immagini da un PDF senza degradarle.
  • pdfsandwich, che può darvi un file OCR' semplicemente eseguendo pdfsandwich inputfile.pdf. Potrebbe essere necessario modificare le opzioni per ottenere un risultato decente. Vedi the official page per maggiori informazioni.