PDF dosyasındaki görüntülerin DPI'sını programlı olarak nasıl belirleyebilirim?


13

convert(OCR yoluyla tesseract) kullanarak TIFF dosyalara bölmek istiyorum bazı PDF dosyaları var . Şimdiye kadar harika çalışıyor - tüm süreci otomatikleştirmek için convertçıkışın DPI'sını ayarlamam gerekiyor . Şu anda böyle bir komut kullanıyorum:

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

... PDF dosyalarını 300 DPI'da çıktılar. Ancak, bazı PDF dosyaları daha düşük DPI (örneğin 150 DPI) içerir, bu da 300 DPI ile çıktı almak istemediğim anlamına gelir convert- bu, ek bilgi olmadan aşırı büyük TIFF dosyaları oluşturur.

Adobe Acrobat'ı açıp "ön kontrol" araçlarında dolaşarak bir PDF dosyasındaki görüntülerin DPI'sını kontrol etmenin yolları olduğunu biliyorum. Ancak, komut satırı üzerinden belirli bir PDF dosyasının DPI'sını belirlemenin bir yolu var mı?

Yanıtlar:


9

Ana cevap

Aynı tür bir işle ilgilendiğim için (PDF dosyalarını mutlaka OCR'a değil, ancak onları DjVu'ya ve sonra OCR'a dönüştürmek için), bu soruyu ve yanıtları eksik buldum (çünkü DPI'nin tahminini tahmin etmem gerektiğinden) piksel sayısı ile görüntüler ve daha sonra boyutu çıktı olarak pdfinfoveya diğer hileler olarak kullanın --- PDF içindeki görüntülerin farklı yoğunluklara sahip olabileceğinden bahsetmiyorum).

Daha fazla araştırma yaptıktan sonra, pdfimages( poppler-utils paketinden ) aşağıdaki gibi kullanabileceğinizi buldum :

$ 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%

x-ppiVe y-ppiyukarıdaki listeye dikkat edin . Ayrıca görüntülerin PDF'de saklanma biçimini de listeler, bu da serindir (bazen JBIG2, bazen JPEG2000 vb.)

Not: Dosya deptest.pdfüzerinde kullanılan mevcuttur dan pdfsizeoptbireyin depo .

Gerçek eylem

Bundan sonra, görüntüleri pdfimageskendisiyle çıkarabilir veya tüm sayfaları beğenebileceğiniz birçok formatta (örneğin, tarama için tiff) oluşturmak için pdftoppm(ayrıca poppler-utils) kullanabilirsiniz tesseract.

Aşağıdaki gibi bir şey kullanabilirsiniz ( imgsresimlerinizi koyacağınız bir ad oluşturduğunuz varsayılarak ):

pdfimages -png Faraway-PRA.pdf imgs/prefix

Dosyalar, dizinde , aşağıdaki gibi imgsadlarla başlayarak oluşturulacaktır prefix:

$ 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
(...)

Ardından, benzer araçlarla scantailorveya istediğiniz herhangi bir şeyle uygun gördüğünüz herhangi bir ameliyatı yapabilirsiniz .

Daha doğrudan cevap

Bir PDF dosyasını OCR yapmak istiyorsanız, bakımlı ve önceden paketlenmiş bir programı yani ocrmypdf kullanabilirsiniz .


O Not x-ppi(DPI x çözünürlüğü) ve y-ppi(DPI y çözünürlük) eski sürümlerinde gösterilen DEĞİLDİR pdfimagesÖrneğin Ubuntu 14.04 ile geldiği. Ancak Ubuntu 18.04'te mevcut olanlar bu değerleri içerir. pdfimages -vBenim Ubuntu 18.04 makine şovlarda ben sürüm 0.62.0, var does bu özelliklere sahip.
Gabriel Staples

@ GabrielStaples, bunu belirttiğin için teşekkürler. Ubuntu 14.04'ün zaten EOL'ed olduğunu düşündüm, ancak wiki.ubuntu.com/Releases
rbrito


2

Aşağıdaki komutu kullanıyorum:

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

ve geri döner:

Size: 380x380

Teşekkürler - bu pdf görüntülerinin boyutunu alır (sizin durumunuzda, bir kare olduğu gibi 380x380). DPI farklı. Bu komutu sadece çalıştırdığım Size: 595x842dosyamda, DPI (Acrobat'ta kontrol ediyor) 130
Jason
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.