Làm cách nào để xác định lập trình DPI của hình ảnh trong tệp PDF?


13

Tôi có một số tệp PDF mà tôi muốn tách thành các tệp TIFF bằng cách sử dụng convert(để OCR qua tesseract). Điều này cho đến nay vẫn hoạt động rất tốt - ngoại trừ việc để tự động hóa toàn bộ quá trình, tôi cần đặt DPI của convertđầu ra. Ngay bây giờ, tôi đang sử dụng một lệnh như thế này:

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

... Xuất ra các tệp PDF ở 300 DPI. Tuy nhiên, một số tệp PDF có DPI thấp hơn (ví dụ 150 DPI) có nghĩa là tôi không muốn xuất chúng ở 300 DPI thông qua convert- điều này tạo ra các tệp TIFF quá lớn mà không có thêm thông tin.

Tôi biết rằng có nhiều cách để kiểm tra DPI của hình ảnh trong tệp PDF bằng cách mở Adobe Acrobat và làm rối tung trong các công cụ "preflight". Tuy nhiên, có cách nào để xác định thông qua dòng lệnh DPI của một tệp PDF cụ thể không?

Câu trả lời:


9

Câu trả lời chính

Vì tôi quan tâm đến cùng một loại công việc (mặc dù không nhất thiết phải OCR các tệp PDF, nhưng để chuyển đổi chúng thành DjVusau đó là OCR chúng), tôi đã tìm thấy câu hỏi này và các câu trả lời thiếu (vì tôi cần đoán DPI của hình ảnh có số lượng pixel và sau đó sử dụng kích thước làm đầu ra bằng pdfinfohoặc các thủ thuật khác --- không đề cập đến việc hình ảnh bên trong PDF có thể có mật độ khác nhau, v.v.).

Sau rất nhiều nghiên cứu, tôi thấy rằng bạn có thể sử dụng pdfimages(từ gói poppler-utils ) như sau:

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

Lưu ý x-ppiy-ppitại danh sách trên. Nó cũng liệt kê định dạng mà hình ảnh được lưu trữ trong PDF, rất tuyệt (đôi khi, đó là JBIG2, đôi khi là JPEG2000, v.v.)

Lưu ý: Tệp deptest.pdfđược sử dụng ở trên có sẵn từ pdfsizeoptkho của .

Hành động thực sự

Sau đó, bạn có thể chỉ cần trích xuất hình ảnh bằng pdfimageschính nó hoặc sử dụng pdftoppm(cũng từ poppler-utils) để hiển thị toàn bộ trang theo nhiều định dạng mà bạn có thể thích (ví dụ: tiff, để quét với tesseract).

Bạn có thể sử dụng một cái gì đó như sau (giả sử bạn đã tạo một thư mục có tên imgsnơi bạn sẽ đặt hình ảnh của mình):

pdfimages -png Faraway-PRA.pdf imgs/prefix

Các tệp sẽ được tạo bên trong thư mục imgscó tên bắt đầu bằng prefix, như trong:

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

Sau đó, bạn có thể thực hiện bất kỳ phẫu thuật nào mà bạn thấy phù hợp với các công cụ như scantailorhoặc bất cứ điều gì bạn thích.

Thêm câu trả lời trực tiếp

Nếu bạn chỉ muốn OCR một tệp PDF, bạn có thể sử dụng một chương trình được duy trì tốt và đã được đóng gói, cụ thể là ocrmypdf .


Lưu ý rằng x-ppi(độ phân giải x trong DPI) và y-ppi(độ phân giải y trong DPI) KHÔNG được hiển thị trên các phiên bản cũ hơn pdfimagesđi kèm với Ubuntu 14.04. Những gì có sẵn trên Ubuntu 18.04, tuy nhiên, không bao gồm các giá trị này. pdfimages -vtrên Ubuntu 18,04 chương trình máy của tôi, tôi có phiên bản 0.62.0, mà không có các tính năng này.
Gabriel Staples

@GabrielStaples, cảm ơn bạn đã chỉ ra điều đó. Tôi nghĩ rằng Ubuntu 14.04 đã được EOL'ed, nhưng nó "chỉ" đã hỗ trợ tiêu chuẩn của nó kết thúc vào ngày của năm 2019 theo wiki.ubuntu.com/Releases
rbrito

4

Tôi cần thông tin này và chỉ tìm thấy nó ở đây:

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

Kỹ thuật này cũng sử dụng ImageMagick:

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

Đầu ra là kích thước của hình ảnh và dpi:

2480 x 3507 300 x 300

Tôi sẽ thêm một dòng mới vào cuối định dạng, trong trường hợp bạn muốn làm * .pdf để xử lý tất cả các tệp pdf trong thư mục. "% wx% h% xx% y \ n"
Hatoru Hansou

2

Tôi sử dụng lệnh sau:

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

và nó trả về:

Size: 380x380

Cảm ơn - cái này có kích thước của hình ảnh pdf (trong trường hợp của bạn, 380x380 vì nó là một hình vuông). DPI thì khác. Trên tệp của tôi mà tôi vừa chạy lệnh này, tôi nhận được Size: 595x842mặc dù DPI (kiểm tra trong Acrobat) là khoảng 130
Jason
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.