PDF 파일에서 이미지의 DPI를 프로그래밍 방식으로 결정하는 방법은 무엇입니까?


13

convert(OCR을 통해 tesseract) 를 사용하여 TIFF 파일로 분할하려는 일부 PDF 파일이 있습니다. 전체 프로세스를 자동화하려면 convert출력 의 DPI를 설정해야한다는 점을 제외하고는 지금까지 훌륭하게 작동했습니다 . 지금은 다음과 같은 명령을 사용하고 있습니다.

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

... PDF 파일을 300 DPI로 출력합니다. 그러나 일부 PDF 파일은 DPI (예 : 150 DPI) 가 낮으므로 300 DPI를 통해 출력하지 않으려는 convert경우 추가 정보없이 지나치게 큰 TIFF 파일이 생성됩니다.

Adobe Acrobat을 열고 "프리 플라이트"도구를 사용하여 PDF 파일에서 이미지의 DPI를 확인하는 방법이 있다는 것을 알고 있습니다. 그러나 명령 줄을 통해 특정 PDF 파일의 DPI를 결정하는 방법이 있습니까?

답변:


9

주요 답변

내가 작업의 같은 종류에 관심이 있기 때문에 (OCR에 필요하지 불구하고 PDF 파일을, 그러나로 변환하는 DJVU다음 나는의 DPI를 추측하는 데 필요한 있기 때문에 (OCR 그들에게), 나는 부족이 질문에 응답을 발견 픽셀 수의 이미지가 포함 된 이미지를 출력 한 다음 pdfinfo다른 트릭 으로 출력 된 크기를 사용합니다 ( PDF 내의 이미지의 밀도가 다를 수 있음).

더 많은 연구를 한 결과 , 다음과 같이 ( poppler-utilspdfimages 패키지에서) 패키지를 사용할 수 있음을 발견했습니다 .

$ 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-ppiy-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원하는 도구 나 원하는 도구로 적합한 수술을 수행 할 수 있습니다 .

더 직접적인 답변

PDF 파일 만 OCR하려는 경우 잘 유지 관리되고 이미 패키지 된 프로그램, 즉 ocrmypdf를 사용할 수 있습니다.


참고 x-ppi(DPI의 X 해상도)와 y-ppi(DPI에서 Y 해상도)의 이전 버전에 표시되지 않습니다 pdfimages예를 들어, 우분투 14.04 함께 제공한다. 그러나 Ubuntu 18.04에서 사용 가능한 항목에는 이러한 값이 포함됩니다. pdfimages -v내 우분투 18.04 기계 쇼에 나는 버전 0.62.0 가지고 않습니다 이러한 기능을 가지고 있습니다.
가브리엘 스테이 플스

@GabrielStaples, 지적 해 주셔서 감사합니다. 우분투 14.04은 이미 EOL'ed 것을 생각했지만 "은"표준 지원에 따라 2019 년 7 월을 마감했다 wiki.ubuntu.com/Releases
rbrito


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.