Come determinare a livello di codice DPI delle immagini in file PDF?


13

Ho alcuni file PDF che voglio dividere in file TIFF utilizzando convert(al fine di OCR tramite tesseract). Finora funziona alla grande, tranne che per automatizzare l'intero processo, devo impostare il DPI convertdell'output. In questo momento, sto usando un comando come questo:

convert -density 300 myFile.pdf -depth 8 -background white output-%04d.tiff

... che genera i file PDF a 300 DPI. Tuttavia, alcuni file PDF hanno DPI più bassi (ad es. 150 DPI), il che significa che non voglio emetterli a 300 DPI tramite convert- questo crea file TIFF eccessivamente grandi senza ulteriori informazioni.

So che ci sono modi per controllare il DPI delle immagini in un file PDF aprendo Adobe Acrobat e scherzando con gli strumenti "preflight". Tuttavia, esiste un modo per determinare tramite la riga di comando il DPI di un determinato file PDF?

Risposte:


9

Risposta principale

Dato che sono interessato allo stesso tipo di lavoro (anche se non necessariamente per OCR i file PDF, ma per convertirli in DjVu e poi OCR), ho trovato questa domanda e le risposte carenti (dal momento che avevo bisogno di indovinare il DPI del immagini con il numero di pixel e quindi utilizzare le dimensioni come output di pdfinfoo altri trucchi --- per non parlare del fatto che le immagini all'interno di un PDF possono avere densità diverse ecc.).

Dopo molte altre ricerche, ho scoperto che puoi usare pdfimages(dal pacchetto poppler-utils ) come il seguente:

$ pdfimages -list deptest.pdf
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image     100   100  gray    1   1  image  no         9  0    53    53  169B  14%
   2     1 image     100   100  gray    1   1  ccitt  no   [inline]      53    53  698B  56%

Si noti il x-ppie y-ppinell'elenco sopra. Elenca anche il formato in cui sono memorizzate le immagini nel PDF, che è interessante (a volte è JBIG2, a volte JPEG2000 ecc.)

Nota: il file deptest.pdfusato sopra è disponibile dal pdfsizeoptrepository .

La vera azione

Successivamente, puoi semplicemente estrarre le immagini con pdfimagesse stesso o utilizzare pdftoppm(anche da poppler-utils) per eseguire il rendering di intere pagine in molti formati che ti potrebbero piacere (ad esempio, tiff, per la scansione con tesseract).

Puoi usare qualcosa di simile al seguente (supponendo che tu abbia creato una directory chiamata imgsdove mettere le tue immagini):

pdfimages -png Faraway-PRA.pdf imgs/prefix

I file verranno creati all'interno della directory imgscon nomi che iniziano con prefix, come in:

$ ls 
prefix-000.png  prefix-047.png  prefix-094.png  prefix-141.png
prefix-001.png  prefix-048.png  prefix-095.png  prefix-142.png
prefix-002.png  prefix-049.png  prefix-096.png  prefix-143.png
prefix-003.png  prefix-050.png  prefix-097.png  prefix-144.png
(...)

Quindi, puoi eseguire qualsiasi intervento chirurgico che ritieni adatto a strumenti simili scantailoro qualunque cosa ti piaccia.

Risposta più diretta

Se si desidera solo eseguire l'OCR di un file PDF, è possibile utilizzare un programma ben gestito e già compresso, ovvero ocrmypdf .


Si noti che x-ppi(risoluzione x in DPI) e y-ppi(risoluzione y in DPI) NON sono mostrati nelle versioni precedenti di pdfimagesUbuntu 14.04, ad esempio. Ciò che è disponibile su Ubuntu 18.04, tuttavia, include questi valori. pdfimages -vsulla mia Ubuntu 18.04 spettacoli macchina ho la versione 0.62.0, che ha avere queste caratteristiche.
Gabriel Staples,

@GabrielStaples, grazie per averlo sottolineato. Pensavo che Ubuntu 14.04 fosse già EOL, ma "solo" aveva il suo supporto standard terminato a luglio del 2019 secondo wiki.ubuntu.com/Releases
rbrito


2

Uso il seguente comando:

convert MyPDF.pdf -print "Size: %wx%h\n" /dev/null

e restituisce:

Size: 380x380

Grazie - questo ottiene la dimensione delle immagini pdf (nel tuo caso, 380x380 in quanto è un quadrato). Il DPI è diverso. Sul mio file su cui ho appena eseguito questo comando, ottengo Size: 595x842anche se il DPI (controllo in Acrobat) è di circa 130
Jason
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.