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

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

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

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



답변

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

여기에 이미지 설명 입력


답변

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

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

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


답변

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

  • 두 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


답변

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

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

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

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

건배!


답변

또한 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


답변

가장 좋은 방법은 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 Comparator- http : //www.premediasystems.com/pdfc.html “-이 작업을 매우 우아하고 효율적으로 수행합니다. 또한 무료가 아니며 Mac OS X 전용 응용 프로그램입니다.