많은 수의 PDF 파일을 비교하는 도구? [닫은]


84

광학 콘텐츠에 대해 많은 수의 PDF 파일을 비교해야합니다. PDF 파일은 다른 플랫폼과 다른 버전의 소프트웨어에서 생성 되었기 때문에 구조적 차이가 있습니다. 예를 들면 :

  • 텍스트 덩어리가 다를 수 있습니다.
  • 쓰기 순서는 다를 수 있습니다.
  • 위치는 일부 픽셀이 다를 수 있습니다.

콘텐츠를 내부 구조가 아닌 사람처럼 비교해야합니다. 우리가 사용한 다른 버전의 PDF 생성기 간의 회귀 테스트를 원합니다.


3
부분적인 대답은 pdftotext 를 사용 하고 포함 된 텍스트를 비교하는 것입니다.
— Sklivvz

그러나 이것은 선, 상자, 그림, 차트 등과 같은 텍스트가 아닌 모든 정보를 무시합니다. 또한 구조적 위치가 아닌 텍스트의 광학적 위치를 표시하지 않는다고 생각합니다.
— Horcrux7

동의합니다. 충분한 기준이 아닙니다. 반면 필수 기준이므로 단위 테스트로 적합합니다.
— Sklivvz

이전에는 실제로 귀하의 상황에 처한 적이 없었지만 ExamDiff Pro 를 사용하여 PDF를 비교해 보았고 저에게 효과적이었습니다.
— cubex

나중에 언제든지 더 나은 단위 테스트를 추가 할 수 있습니다!
— Sklivvz

답변:


39

우리가 작성한 도구가 없기 때문입니다. i-net PDF 컨텐츠 비교기를 다운로드하여 사용할 수 있습니다. 나는 같은 문제로 다른 사람들에게 도움이되기를 바랍니다. 문제가 있거나 피드백이있는 경우 지원팀에 문의 할 수 있습니다.

여기에 이미지 설명 입력


이 도구의 장점은 순수한 텍스트 비교 자도 아니고 이미지 비교 자도 아니라는 것입니다. 구조별로 비교하고 포함 된 요소가 "동일"한지 확인하므로 비교 된 PDF가 100 % 일치 할 필요는 없지만 정의 가능한 유사성 내에 있습니다. 그리고 그것은 무료입니다.
— 감마

이것도 추천합니다! 문서에 충돌이 발생하여 문서를 보냈습니다. 그들은 그것을 고쳤습니다! : DI는 기분이 좋습니다. 차이가있는 이미지를 생성하거나 콘솔에서 텍스트 보고서를 제공 할 수 있습니다.
— Janus Troelsen

4
@gamma 해당 응용 프로그램은 어디에서 무료입니까? 연간 최소 200 달러 (!)입니다. 30 일 동안 한 번만 무료입니다. 그것은 내가 그것으로 할 일에 너무 비싸다.
— ygoe

@LonelyPixel 네, 맞아요. 버전 1.0은 무료입니다 (2010 년 10 월 14 일 기준). 우리는 그것에 대해 상당히 변경했으며 이제는 유료 도구입니다 (2012-10). 그러나 제한없이 30 일 동안 사용해 볼 수 있습니다. 정말 많은 새로운 기능, 안정성 및 신뢰성을 얻었습니다. ) 난 당신이 아직 한 번 봐 가지고 희망
— 감마

나도 pdf 파일을 비교할 필요가 있습니다-아파치 pdfbox를 사용하여 항아리를 생각해 냈습니다. 이 testautomationguru.com/… 을 확인하고 다운로드하십시오.
— vins 2015-06-14

21

실제로 diffpdf 도구가 있습니다.

http://www.qtrac.eu/diffpdf.html

약점은 추가로 인해 새 텍스트가 부분적으로 새 페이지로 이동할 때 잘 반응하지 않는다는 것입니다. 예를 들어, 이전 페이지 4를 5 페이지의 끝과 6 페이지의 시작과 비교해야하는 경우 매개 변수를 이동하여 두 조각을 개별적으로 비교해야합니다.


1
원래 오픈 소스 버전은 qtrac.eu/diffpdf-foss.html
— Tobias Kienzler 2014

13

집에서 만든 스크립트를 사용했습니다.

  • 두 PDF의 모든 페이지를 비트 맵으로 변환합니다.
  • PDF 1의 색상 페이지를 흰색에 빨간색으로
  • PDF 2 페이지에서 흰색을 투명하게 변경
  • PDF 1의 해당 페이지 위에 PDF 2의 각 페이지를 오버레이합니다.
  • 변환 / 채색 및 오버레이를 여러 코어에서 병렬로 실행합니다.

사용 된 소프트웨어 :

  • PDF- 비트 맵 변환을위한 GhostScript
  • 채색, 투명도 및 오버레이를위한 ImageMagick
  • 병렬 프로세스 동기화를위한 inotify
  • 결과 검토를위한 모든 PNG 가능 이미지 뷰어

장점 :

  • 간단한 구현
  • 사용되는 모든 도구는 오픈 소스입니다.
  • 레이아웃의 작은 차이를 찾는 데 좋습니다.

단점 :

  • 변환이 느립니다
  • PDF 간의 주요 차이점 (예 : 페이지 매기기)은 엉망이됩니다.
  • 비트 맵은 확대 / 축소 할 수 없습니다.
  • 흑백 텍스트와 다이어그램에서만 잘 작동합니다.
  • 사용하기 쉬운 GUI 없음

PDF / PostScript 수준에서 동일한 작업을 수행 할 도구를 찾고있었습니다.

스크립트가 유틸리티를 호출하는 방법은 다음과 같습니다 (ImageMagick은 백그라운드에서 GhostScript를 사용하여 PDF-> PNG 변환을 수행합니다).

$ convert -density 150x150 -fill red -opaque black +antialias 1.pdf back%02d.png
$ convert -density 150x150 -transparent white +antialias 2.pdf front%02d.png
$ composite front01.png back01.png result01.png # do this for all pairs of images

1
전체 스크립트를 공유하지 않으시겠습니까?
— Janus Troelsen

1
이것이 제가 합성에 사용한 것입니다.for i in $(seq -w 0 05); do /cygdrive/c/Progra~1/ImageMagick-6.6.9-Q8/composite.exe 1-$i.png 2-$i.png result-$i.png; done
— Janus Troelsen

다음은 디스크에 임시 파일을 쓰지 않고 Ghostscript보다 빠른 Poppler의 pdftoppm을 사용하는 스크립트입니다 : gist.github.com/brechtm/891de9f72516c1b2cbc1 . pdfdiff디렉토리 에있는 PDF의 각 페이지에 대해 하나의 JPG를 출력 하고 추가로 두 PDF간에 다른 페이지 수를 인쇄합니다.
— Brecht Machiels

12

여기에서 볼 수없는 것 같습니다. 그래서 여기에 있습니다 : 수퍼 유저 를 통해 : 두 PDF 파일의 차이점을 비교하는 방법? (답변 # 229891, @slestak) ,

https://github.com/vslavik/diff-pdf

(Ubuntu Natty의 빌드 단계는 get-diff-pdf.sh 에서 찾을 수 있습니다 )

내가 볼 수있는 한, 기본적으로 pdf (s)의 각 페이지의 텍스트 / 그래픽을 오버레이하여 변경 사항이 있는지 쉽게 확인할 수 있습니다.

건배!


9

또한 pdftotext (Sklivvz의 답변 참조)를 사용하여 ASCII 버전의 PDF를 생성하고 wdiff 를 사용하여 비교했습니다.

pdftotext의 -layout스위치를 사용하여 가독성을 높이고 레이아웃 변경에 대한 아이디어를 얻으십시오.

wdiff에서 멋진 색상의 출력을 얻으려면 다음 래퍼 스크립트를 사용하십시오.

#!/bin/sh
RED=$'\e'"[1;31m"
GREEN=$'\e'"[1;32m"
RESET=$'\e'"[0m"
wdiff -w$RED -x$RESET -y$GREEN -z$RESET -n $1 $2

4

가장 좋은 방법은 PDF를 적절한 해상도로 이미지로 변환하고 이미지 비교를 수행하는 것입니다.

PDF에서 이미지를 생성하려면 Adobe PDF 라이브러리 또는 pdf 파일을 tiff 파일로 변환하는 최상의 방법 에서 제안 된 솔루션을 사용할 수 있습니다 .

생성 된 TIFF 파일을 비교하기 위해 GNU tiffcmp ( GnuWin32 tiff 의 Windows 부분 용 )를 찾았고 tiffinfo 가 잘 수행했습니다. tiffcmp -l을 사용하고 출력 행 수를 세어 차이점을 찾으십시오. 약간의 콘텐츠 변경 (예 : 앤티 앨리어싱 차이)이 만족 스러우면 tiffinfo를 사용하여 총 픽셀 수를 계산 한 다음 백분율 차이 값을 생성 할 수 있습니다.

그런데 구조가 변경되지 않은 간단한 PDF 비교를 수행하는 사람은 명령 줄 diff를 사용하고 특정 패턴을 무시할 수 있습니다 (예 : GNU diff 2.7 사용).

diff --brief -I xap : -I xapMM : -I / CreationDate -I / BaseFont -I / ID --binary --text

이것은 생성 된 글꼴 이름의 변경 사항을 항상 포착하지 못한다는 문제가 있습니다.


두 이미지를 비교하는 것이 PDF 파일 자체를 비교하는 것보다 더 복잡하다고 생각합니다.
— Horcrux7 2010

이미지 비교는 GnuWin32 tiffcmp로 수행 할 수 있습니다. 이에 대해 자세히 설명하기 위해 답변을 업데이트하겠습니다.
— danio

1

당사의 제품인 PDF Comparator- http : //www.premediasystems.com/pdfc.html "-이 작업을 매우 우아하고 효율적으로 수행합니다. 또한 무료가 아니며 Mac OS X 전용 응용 프로그램입니다.


이 도구는 픽셀 단위로 비교합니다. 이것은 매우 간단합니다. 질문은 인간이하는 것과 같은 비교였습니다.
— Horcrux7

1
@ Horcrux7 : 그러나 인간의 눈은 '픽셀 단위'를 비교하는 것 외에 어떻게 비슷한 모양의 다른 페이지를 비교합니까?!?
— Kurt Pfeifle

@KurtPfeifle-저는 이것이 오래된 코멘트라는 것을 알고 있습니다 ...하지만 인간 은 픽셀 단위로 이미지를 비교 하지 않습니다 . 인간이 이미지의 차이를 비교하는 방식은 매우 복잡하지만 패턴 인식 및 휴리스틱에 크게 의존합니다.
— CBRF23 2015-08-18

@ CBRF23 : 맞습니다. 그리고 저는 그것을 알고 있습니다.하지만 결국이 모든 휴리스틱은 여전히 ​​"픽셀 단위"비교에 뿌리를두고 있습니다. 수행 다른, 높은 수준의 추론에 대해서는 ImageMagick: 내 다른 몇 가지 답변을 참조 하나의 - 2 개의 - 세 .
— Kurt Pfeifle 2015-08-18

@ CBRF23 : ... 그리고 원래 포스터 인 (at) Hocrux7은 그의 질문에서 "픽셀"을 언급하기도했고 파일의 "내부 구조"를 비교하고 싶지 않았습니다.
— Kurt Pfeifle 2015-08-18

1

귀하의 요구에 따라 텍스트로 변환 솔루션이 가장 쉽고 직접적입니다. 비트 맵 아이디어가 꽤 멋지다고 생각했습니다.



0

Tarkware Pdf Comparer로 PDF 파일을 일괄 비교할 수 있습니다 . 그러나 무료가 아니며 Adobe Acrobat이 필요합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.