วิธีกำหนด DPI ของรูปภาพแบบเป็นโปรแกรมในไฟล์ PDF โดยทางโปรแกรม


13

ฉันมีไฟล์ PDF บางไฟล์ที่ฉันต้องการแยกออกเป็นไฟล์ TIFF โดยใช้convert(เพื่อให้ OCR ผ่านtesseract) จนถึงตอนนี้ใช้งานได้ดี - ยกเว้นว่าเพื่อให้กระบวนการทั้งหมดเป็นแบบอัตโนมัติฉันต้องตั้งค่า DPI ของconvertเอาต์พุต ตอนนี้ฉันกำลังใช้คำสั่งเช่นนี้:

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

... ซึ่งไฟล์ PDF จะส่งออกที่ 300 DPI อย่างไรก็ตามไฟล์ PDF บางไฟล์มีDPI ที่ต่ำกว่า (เช่น 150 DPI) ซึ่งหมายความว่าฉันไม่ต้องการส่งออกที่ 300 DPI ผ่านconvert- นี่เป็นการสร้างไฟล์ TIFF ที่มีขนาดใหญ่เกินไปโดยไม่มีข้อมูลเพิ่มเติม

ฉันรู้ว่ามีวิธีการตรวจสอบ DPI ของภาพในไฟล์ PDF โดยการเปิด Adobe Acrobat และ messing ในเครื่องมือ "preflight" อย่างไรก็ตามมีวิธีการตรวจสอบผ่านทางบรรทัดคำสั่ง DPI ของไฟล์ PDF ที่เฉพาะเจาะจงหรือไม่

คำตอบ:


9

คำตอบหลัก

เนื่องจากฉันสนใจงานประเภทเดียวกัน (แต่ไม่จำเป็นต้องแปลงไฟล์ OCR เป็น PDF แต่แปลงเป็นDjVuและOCR แล้ว ) ฉันพบคำถามนี้และคำตอบที่ขาด (เนื่องจากฉันต้องการเดา DPI ของ ภาพที่มีจำนวนพิกเซลแล้วใช้ขนาดที่เป็นผลลัพธ์โดยpdfinfoหรือเทคนิคอื่น ๆ - ไม่ต้องพูดถึงว่ารูปภาพภายใน PDF อาจมีความหนาแน่นแตกต่างกันเป็นต้น)

หลังจากการวิจัยมากขึ้นฉันพบว่าคุณสามารถใช้pdfimages(จากแพ็คเกจpoppler-utils ) ดังนี้:

$ 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-ppiและy-ppiที่รายการข้างต้น นอกจากนี้ยังแสดงรูปแบบที่จัดเก็บรูปภาพใน PDF ซึ่งเจ๋ง (บางครั้งก็เป็น JBIG2 บางครั้งก็ JPEG2000 เป็นต้น)

หมายเหตุ: ไฟล์ที่deptest.pdfใช้ด้านบนสามารถใช้งานได้จากpdfsizeoptที่เก็บของ

การกระทำจริง

หลังจากนั้นคุณสามารถแยกรูปภาพด้วยpdfimagesตัวเองหรือใช้pdftoppm(เช่นจากpoppler-utils) เพื่อแสดงผลทั้งหน้าในหลายรูปแบบที่คุณอาจชอบ (เช่น tiff สำหรับการสแกนด้วยtesseract)

คุณสามารถใช้สิ่งต่อไปนี้ (สมมติว่าคุณสร้างไดเรกทอรีimgsที่จะใส่รูปภาพของคุณ):

pdfimages -png Faraway-PRA.pdf imgs/prefix

ไฟล์จะถูกสร้างขึ้นภายในไดเรกทอรีที่imgsมีชื่อขึ้นต้นด้วย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
(...)

จากนั้นคุณสามารถทำการผ่าตัดใด ๆ ที่คุณเห็นว่าเหมาะสมกับเครื่องมือเช่นscantailorหรืออะไรก็ตามที่คุณชอบ

คำตอบเพิ่มเติมโดยตรง

หากคุณเพียงแค่ต้องการที่จะ OCR ไฟล์ PDF ให้คุณสามารถใช้โปรแกรมที่มีการดูแลอย่างดีและบรรจุอยู่แล้วคือocrmypdf


โปรดทราบว่าx-ppi(ความละเอียด x ใน DPI) และy-ppi(ความละเอียด y ใน DPI) จะไม่แสดงในเวอร์ชันเก่าpdfimagesที่มาพร้อมกับ Ubuntu 14.04 เป็นต้น อย่างไรก็ตามสิ่งที่มีใน Ubuntu 18.04 นั้นมีค่าเหล่านี้ด้วย pdfimages -vบนของ Ubuntu 18.04 แสดงให้เห็นว่าเครื่องผมมีรุ่น 0.62.0 ซึ่งจะมีคุณสมบัติเหล่านี้
Gabriel Staples

@ GabrielStaples ขอบคุณที่ชี้ให้เห็น ฉันคิดว่า Ubuntu 14.04 นั้น EOL'ed อยู่แล้ว แต่มัน "เท่านั้น" ได้รับการสนับสนุนมาตรฐานสิ้นสุดในเดือนกรกฎาคม 2019 ตามwiki.ubuntu.com/Releases
rbrito

4

ฉันต้องการข้อมูลนี้และพบได้ที่นี่:

http://www.wizards-toolkit.org/discourse-server/viewtopic.php?t=16110

เทคนิคนี้ยังใช้ ImageMagick:

identify -format "%w x %h %x x %y" DAT_1.tif

ผลลัพธ์คือขนาดของภาพและ dpi:

2480 x 3507 300 x 300

ฉันจะเพิ่มบรรทัดใหม่ในส่วนท้ายของรูปแบบในกรณีที่คุณต้องการ * .pdf เพื่อประมวลผลไฟล์ PDF ทั้งหมดในไดเรกทอรี "% wx% h% xx% y \ n"
Hatoru Hansou

2

ฉันใช้คำสั่งต่อไปนี้:

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

และมันจะส่งคืน:

Size: 380x380

ขอบคุณ - นี่จะมีขนาดของภาพ pdf (ในกรณีของคุณคือ 380x380 เนื่องจากเป็นสี่เหลี่ยมจัตุรัส) DPI นั้นแตกต่างกัน ในไฟล์ของฉันที่ฉันเพิ่งรันคำสั่งนี้ไปฉันจะได้รับSize: 595x842แม้ว่า DPI (การตรวจสอบใน Acrobat) ประมาณ 130
Jason
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.