Công cụ để so sánh số lượng lớn các tệp PDF? [đóng cửa]


84

Tôi cần so sánh số lượng lớn các tệp PDF với nội dung quang học. Bởi vì các tệp PDF được tạo trên các nền tảng khác nhau và với các phiên bản phần mềm khác nhau, có sự khác biệt về cấu trúc. Ví dụ:

  • các đoạn văn bản có thể khác nhau
  • thứ tự viết có thể khác nhau
  • vị trí có thể khác một số pixel

Nó sẽ so sánh nội dung giống như một con người chứ không phải cấu trúc bên trong. Tôi muốn kiểm tra hồi quy giữa các phiên bản khác nhau của trình tạo PDF mà chúng tôi đã sử dụng.


3
Một phần câu trả lời sẽ là sử dụng pdftotext và so sánh văn bản có trong đó.
Sklivvz 28/09/08

Nhưng điều này sẽ bỏ qua tất cả các thông tin không phải văn bản như đường thẳng, hộp, hình ảnh, biểu đồ, v.v. Tôi cũng nghĩ rằng nó không hiển thị các vị trí quang học của văn bản khác vị trí cấu trúc.
Horcrux7

Tôi đồng ý, nó không phải là một tiêu chí đủ. Mặt khác, nó là một tiêu chí cần thiết, do đó nó là đầy đủ như một bài kiểm tra đơn vị.
Sklivvz 28/09/08

Thực sự chưa bao giờ ở trong trường hợp của bạn trước đây, nhưng tôi đã thử ExamDiff Pro để so sánh các tệp PDF và nó phù hợp với tôi.
cubex 28/09/08

Bạn luôn có thể thêm một bài kiểm tra đơn vị tốt hơn sau này!
Sklivvz 28/09/08

Câu trả lời:


39

Bởi vì không có công cụ như vậy có sẵn mà chúng tôi đã viết một. Bạn có thể tải xuống trình so sánh nội dung PDF i-net và sử dụng nó. Tôi hy vọng rằng sẽ giúp được những người khác có cùng vấn đề. Nếu bạn gặp sự cố với nó hoặc bạn có phản hồi cho chúng tôi thì bạn có thể liên hệ với bộ phận hỗ trợ của chúng tôi.

nhập mô tả hình ảnh ở đây


Ưu điểm của công cụ này là nó không phải là một trình so sánh văn bản thuần túy cũng không phải là một trình so sánh hình ảnh. Nó so sánh theo cấu trúc, kiểm tra xem các phần tử chứa có "giống nhau" hay không - vì vậy các tệp PDF được so sánh của bạn không nhất thiết phải khớp 100% nhưng ở mức tương tự có thể xác định được. Và nó hoàn toàn miễn phí.
gamma

Tôi cũng muốn giới thiệu điều này! Nó bị rơi trên một tài liệu nên tôi đã gửi nó cho họ. Họ đã sửa nó! : DI cảm thấy tuyệt vời. Nó có thể tạo ra những hình ảnh có sự khác biệt hoặc nó có thể cung cấp cho bạn một báo cáo dạng văn bản trong bảng điều khiển.
Janus Troelsen

4
@gamma Ứng dụng đó miễn phí ở đâu? Nó tốn ít nhất 200 USD mỗi năm (!). Nó chỉ miễn phí một lần trong 30 ngày. Đó là cách quá đắt so với những gì tôi muốn làm với nó.
ygoe

@LonelyPixel Yep, bạn nói đúng. Phiên bản 1.0 miễn phí (kể từ ngày 10 tháng 10 năm 2010). Chúng tôi đã thay đổi khá nhiều về nó và giờ đây nó là một công cụ trả phí (2012-10). Tuy nhiên, bạn có thể dùng thử nó trong 30 ngày mà không có bất kỳ giới hạn nào. Nó thực sự đã đạt được rất nhiều tính năng mới, độ ổn định và độ tin cậy. Tôi hy vọng bạn vẫn có một cái nhìn vào nó;)
gamma

Tôi cũng cần phải so sánh các tệp pdf - tôi đã nghĩ ra một cái lọ bằng cách sử dụng apache pdfbox. Kiểm tra testautomationguru.com/… để làm ví dụ và tải xuống.
vins

21

Thực sự có một công cụ diffpdf.

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

Điểm yếu của nó là nó không phản ứng tốt khi các bổ sung làm cho văn bản mới chuyển một phần sang trang mới. Ví dụ: nếu trang 4 cũ nên được so sánh với cuối trang 5 và đầu trang 6, bạn sẽ cần phải thay đổi các tham số để so sánh hai phần riêng biệt.


1
Phiên bản nguồn mở ban đầu vẫn có sẵn tại qtrac.eu/diffpdf-foss.html
Tobias

13

Tôi đã sử dụng một script tự làm tại nhà

  • chuyển đổi tất cả các trang trên hai PDF thành bitmap
  • chuyển màu các trang PDF 1 sang màu đỏ-trắng
  • thay đổi màu trắng thành trong suốt trên các trang PDF 2
  • chồng từng trang từ PDF 2 lên đầu trang tương ứng từ PDF 1
  • chạy chuyển đổi / tô màu và lớp phủ song song trên nhiều lõi

Phần mềm được sử dụng:

  • GhostScript để chuyển đổi PDF sang bitmap
  • ImageMagick để tô màu, trong suốt và lớp phủ
  • inotify để đồng bộ hóa các quy trình song song
  • bất kỳ trình xem ảnh hỗ trợ PNG nào để xem lại kết quả

Ưu điểm:

  • thực hiện đơn giản
  • tất cả các công cụ được sử dụng đều là mã nguồn mở
  • tuyệt vời để tìm kiếm sự khác biệt nhỏ trong bố cục

Nhược điểm:

  • chuyển đổi chậm
  • sự khác biệt lớn giữa các tệp PDF (ví dụ: phân trang) dẫn đến tình trạng lộn xộn
  • bitmap không thể thu phóng
  • chỉ hoạt động tốt cho văn bản và sơ đồ đen trắng
  • không có GUI dễ sử dụng

Tôi đang tìm kiếm một công cụ có thể làm được điều tương tự ở cấp độ PDF / PostScript.

Đây là cách tập lệnh của chúng tôi sử dụng các tiện ích (lưu ý rằng ImageMagick sử dụng GhostScript phía sau để thực hiện chuyển đổi 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
Tại sao không chia sẻ toàn bộ kịch bản?
Janus Troelsen

1
Đây là những gì tôi đã sử dụng để tổng hợp: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

Đây là một tập lệnh không ghi các tệp tạm thời vào đĩa và sử dụng pdftoppm của Poppler, nhanh hơn Ghostscript: gist.github.com/brechtm/891de9f72516c1b2cbc1 . Nó xuất ra một JPG cho mỗi trang của các tệp PDF trong một pdfdiffthư mục và in thêm số trang khác nhau giữa hai tệp PDF.
Brecht Machiels

12

Tôi dường như không thể thấy điều này ở đây, vì vậy đây là: via superuser: Làm thế nào để so sánh sự khác biệt giữa hai tệp PDF? (câu trả lời # 229891, bởi @slestak) , có

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

(có thể tìm thấy các bước xây dựng cho Ubuntu Natty trong get-diff-pdf.sh )

Theo như tôi thấy, về cơ bản nó sẽ phủ lên văn bản / đồ họa của mỗi trang trong (các) pdf, cho phép bạn dễ dàng xem liệu có bất kỳ thay đổi nào không ...

Chúc mừng!


9

Chúng tôi cũng đã sử dụng pdftotext (xem câu trả lời của Sklivvz) để tạo các phiên bản ASCII của PDF và wdiff để so sánh chúng.

Sử dụng -layoutcông tắc của pdftotext để nâng cao khả năng đọc và có một số ý tưởng về những thay đổi trong bố cục.

Để có được đầu ra có màu đẹp từ wdiff, hãy sử dụng tập lệnh trình bao bọc này:

#!/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

Tôi nghĩ cách tốt nhất của bạn sẽ là chuyển đổi PDF thành hình ảnh ở độ phân giải tốt và hơn là so sánh hình ảnh.

Để tạo hình ảnh từ PDF, bạn có thể sử dụng Thư viện Adobe PDF hoặc giải pháp được đề xuất tại Cách tốt nhất để chuyển đổi tệp pdf sang tệp tiff .

Để so sánh các tệp TIFF đã tạo, tôi tìm thấy GNU tiffcmp (đối với phần cửa sổ của GnuWin32 tiff ) và tiffinfo đã làm rất tốt. Sử dụng tiffcmp -l và đếm số dòng đầu ra để tìm bất kỳ sự khác biệt nào. Nếu bạn hài lòng khi có một lượng nhỏ thay đổi nội dung (ví dụ: sự khác biệt về khử răng cưa) thì hãy sử dụng tiffinfo để đếm tổng số pixel và sau đó bạn có thể tạo giá trị chênh lệch phần trăm.

Nhân tiện, đối với bất kỳ ai thực hiện so sánh PDF đơn giản mà cấu trúc không thay đổi, có thể sử dụng dòng lệnh diff và bỏ qua các mẫu nhất định, ví dụ với GNU diff 2.7:

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

Điều này vẫn có một vấn đề là nó không phải lúc nào cũng bắt được các thay đổi trong tên phông chữ được tạo.


Tôi nghĩ việc so sánh 2 hình ảnh phức tạp hơn sau đó so sánh các tệp PDF với nhau.
Horcrux7

So sánh hình ảnh có thể được thực hiện với GnuWin32 tiffcmp. Tôi sẽ cập nhật câu trả lời của tôi để giải thích kỹ hơn về điều này.
danio

1

Sản phẩm của chúng tôi, Công cụ so sánh PDF - http://www.premediasystems.com/pdfc.html "- sẽ thực hiện điều này khá thanh lịch và hiệu quả. Nó cũng không miễn phí và là ứng dụng chỉ dành cho Mac OS X.


Công cụ này so sánh từng pixel một. Điều này rất đơn giản. Câu hỏi là một so sánh giống như một con người làm điều đó.
Horcrux

1
@ Horcrux7: Nhưng làm cách nào khác ngoài việc so sánh 'từng điểm ảnh' mà mắt người so sánh các trang khác nhau trông giống nhau?!?
Kurt Pfeifle

@KurtPfeifle - Tôi nhận ra đây là một nhận xét cũ ... nhưng con người không so sánh hình ảnh trên cơ sở pixel với pixel; cách con người so sánh sự khác biệt trong hình ảnh khá phức tạp, nhưng chủ yếu dựa vào nhận dạng mẫu và phương pháp phỏng đoán.
CBRF 23

@ CBRF23: Đúng, và tôi biết điều đó - nhưng cuối cùng thì tất cả các phép so sánh này vẫn bắt nguồn từ phép so sánh "pixel-by-pixel". Đối với một số phương pháp phỏng đoán khác, cấp cao hơn, được thực hiện với ImageMagick, hãy xem một số câu trả lời khác của tôi: một - hai - ba .
Kurt Pfeifle

@ CBRF23: ... và người đăng ban đầu, (tại) Hocrux7 thậm chí còn đề cập đến "pixel" trong câu hỏi của anh ấy và rõ ràng là không muốn "cấu trúc bên trong" của các tệp được so sánh (mặc dù nhận xét của anh ấy ở đây một lần nữa mâu thuẫn với nó).
Kurt Pfeifle

1

Dựa trên nhu cầu của bạn, giải pháp chuyển đổi sang văn bản sẽ là dễ dàng và trực tiếp nhất. Tôi thực sự nghĩ rằng ý tưởng bitmap khá tuyệt.



0

Bạn có thể so sánh hàng loạt các tệp pdf với Tarkware Pdf Comparer. Nhưng nó không miễn phí và cần có Adobe Acrobat.

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.