많은 수의 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.