Narzędzie do porównywania dużej liczby plików PDF? [Zamknięte]

84

Muszę porównać dużą liczbę plików PDF pod kątem zawartości optycznej. Ponieważ pliki PDF zostały utworzone na różnych platformach i przy różnych wersjach oprogramowania, istnieją różnice strukturalne. Na przykład:

  • fragment tekstu może być inny
  • kolejność zapisu może być inna
  • pozycja może się różnić o kilka pikseli

Powinien porównywać zawartość jak ludzie, a nie strukturę wewnętrzną. Chcę przetestować regresje między różnymi wersjami generatora PDF, którego używaliśmy.

Horkruks7
źródło
3
Częściową odpowiedzią byłoby użycie pdftotext i porównanie zawartego tekstu.
Sklivvz
Ale to zignoruje wszystkie informacje nietekstowe, takie jak linie, ramki, obrazy, wykresy itp. Myślę również, że nie pokazuje optycznej pozycji tekstu, inaczej pozycji strukturalnej.
Horcrux7
Zgadzam się, to nie jest wystarczające kryterium. Z drugiej strony jest to kryterium konieczne, dlatego jest odpowiednie jako test jednostkowy.
Sklivvz
Nigdy wcześniej nie byłem w twojej sytuacji, ale próbowałem ExamDiff Pro, aby porównać pliki PDF i zadziałało.
cubex
Zawsze możesz później dodać lepszy test jednostkowy!
Sklivvz

Odpowiedzi:

39

Ponieważ nie ma takiego narzędzia, które napisaliśmy. Możesz pobrać i-net PDF do porównywania treści i używać go. Mam nadzieję, że pomogą innym z tym samym problemem. Jeśli masz z tym problemy lub masz do nas opinię, możesz skontaktować się z naszym wsparciem.

wprowadź opis obrazu tutaj

Horkruks7
źródło
Zaletą tego narzędzia jest to, że nie jest to narzędzie do porównywania czystego tekstu ani do porównywania obrazów. Porównuje według struktury, sprawdza, czy elementy zawierające są „takie same” - więc porównywane pliki PDF nie muszą pasować w 100%, ale znajdować się w określonym podobieństwie. I to za darmo.
gamma
To też polecam! Zepsuł się dokument, więc wysłałem go do nich. Naprawili to! : Czuję się świetnie. Może generować obrazy z różnicami lub może dostarczać tekstowy raport w konsoli.
Janus Troelsen
4
@gamma Gdzie ta aplikacja jest bezpłatna? Kosztuje co najmniej 200 USD rocznie (!). To jest bezpłatne tylko raz na 30 dni. To zbyt drogie jak na to, co bym z nim zrobił.
ygoe
@LonelyPixel Tak, masz rację. Wersja 1.0 była bezpłatna (stan na 14.10.2010). Zmieniliśmy go trochę i jest teraz narzędziem płatnym (2012-10). Możesz jednak wypróbować go przez 30 dni bez żadnych ograniczeń. Naprawdę zyskał wiele nowych funkcji, stabilność i niezawodność. Mam nadzieję, że nadal się temu przyjrzycie;)
gamma
Ja też muszę porównać pliki pdf - wymyśliłem słoik używając apache pdfbox. Sprawdź na przykład ten testautomationguru.com/ ... i pobierz.
vins
21

W rzeczywistości istnieje narzędzie diffpdf.

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

Jego słabość polega na tym, że nie reaguje dobrze, gdy dodatki powodują częściowe przesunięcie nowego tekstu na nową stronę. Na przykład, jeśli starą stronę 4 należy porównać z końcem strony 5 i początkiem strony 6, należy przesunąć parametry, aby porównać dwa wycinki oddzielnie.

jabial
źródło
1
Oryginalna wersja open source jest nadal dostępna pod adresem qtrac.eu/diffpdf-foss.html
Tobias Kienzler,
13

Użyłem własnego skryptu, który

  • konwertuje wszystkie strony w dwóch plikach PDF na mapy bitowe
  • kolorowanie stron PDF 1 na czerwono-białe
  • zmienia kolor z białego na przezroczysty na stronach PDF 2
  • nakłada każdą stronę z pliku PDF 2 na odpowiednią stronę z pliku PDF 1
  • uruchamia konwersję / kolorowanie i nakładanie równolegle na wielu rdzeniach

Użyte oprogramowanie:

  • GhostScript do konwersji plików PDF do bitmap
  • ImageMagick do kolorowania, przezroczystości i nakładania
  • inotify do synchronizacji równoległych procesów
  • dowolna przeglądarka obrazów obsługująca format PNG do przeglądania wyników

Plusy:

  • prosta implementacja
  • wszystkie używane narzędzia są open source
  • doskonale nadaje się do znajdowania małych różnic w układzie

Cons:

  • konwersja jest powolna
  • główne różnice między plikami PDF (np. paginacja) powodują bałagan
  • bitmap nie można powiększać
  • działa dobrze tylko w przypadku tekstu i diagramów czarno-białych
  • brak łatwego w użyciu GUI

Szukałem narzędzia, które zrobiłoby to samo na poziomie PDF / PostScript.

Oto jak nasz skrypt wywołuje narzędzia (zwróć uwagę, że ImageMagick używa GhostScript za kulisami do wykonania konwersji 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
akaihola
źródło
1
Dlaczego nie udostępnić pełnego scenariusza?
Janus Troelsen
1
Oto, czego użyłem do komponowania: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
Oto skrypt, który nie zapisuje plików tymczasowych na dysku i używa pdftoppm Popplera, który jest szybszy niż Ghostscript: gist.github.com/brechtm/891de9f72516c1b2cbc1 . Wyprowadza jeden plik JPG dla każdej strony plików PDF w pdfdiffkatalogu i dodatkowo drukuje numery stron, które różnią się między dwoma plikami PDF.
Brecht Machiels
12

Wydaje się, że nie widzę tego tutaj, więc oto jest: przez superużytkownika: Jak porównać różnice między dwoma plikami PDF? (odpowiedź # 229891, @slestak) , jest

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

(kroki kompilacji dla Ubuntu Natty można znaleźć w get-diff-pdf.sh )

O ile widzę, w zasadzie nakłada tekst / grafikę każdej strony w plikach PDF, umożliwiając łatwe sprawdzenie, czy były jakieś zmiany ...

Twoje zdrowie!

sdaau
źródło
9

Użyliśmy również pdftotext (zobacz odpowiedź Sklivvz) do wygenerowania wersji ASCII plików PDF i wdiff do ich porównania.

Użyj -layoutprzełącznika pdftotext, aby zwiększyć czytelność i uzyskać pewne wyobrażenie o zmianach w układzie.

Aby uzyskać ładne kolorowe wyjście z wdiff, użyj tego skryptu opakowującego:

#!/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
akaihola
źródło
4

Myślę, że najlepszym rozwiązaniem byłoby przekonwertowanie pliku PDF na obrazy w przyzwoitej rozdzielczości, a następnie porównanie obrazów.

Aby wygenerować obrazy z PDF, możesz skorzystać z Adobe PDF Library lub rozwiązania sugerowanego w Best way do konwersji plików PDF na pliki TIFF .

Aby porównać wygenerowane pliki TIFF, znalazłem GNU tiffcmp (dla Windows część GnuWin32 tiff ) i tiffinfo wykonało dobrą robotę. Użyj tiffcmp -l i policz liczbę wierszy wyniku, aby znaleźć wszelkie różnice. Jeśli jesteś zadowolony z małej ilości zmian w treści (np. Różnice w wygładzaniu), użyj tiffinfo, aby policzyć całkowitą liczbę pikseli, a następnie możesz wygenerować procentową wartość różnicy.

Nawiasem mówiąc, dla każdego, kto robi proste porównanie PDF, gdzie struktura nie uległa zmianie, można użyć diff z wiersza poleceń i zignorować pewne wzorce, np.

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

Nadal występuje problem polegający na tym, że nie zawsze wychwytuje zmiany w generowanych nazwach czcionek.

danio
źródło
Myślę, że porównywanie 2 obrazów jest bardziej złożone niż porównywanie samych plików PDF.
Horcrux7
Porównywanie obrazów można wykonać za pomocą tiffcmp GnuWin32. Zaktualizuję swoją odpowiedź, aby to rozwinąć.
danio,
1

Nasz produkt, PDF Comparator - http://www.premediasystems.com/pdfc.html "- zrobi to całkiem elegancko i wydajnie. Nie jest też darmowy i jest aplikacją tylko dla Mac OS X.

Peter Truskier
źródło
To narzędzie porównuje piksel po pikselu. To jest bardzo proste. Pytanie było porównaniem, tak jak robią to ludzie.
Horcrux7
1
@ Horcrux7: Ale jak inaczej, niż porównując „piksel po pikselu”, ludzkie oczy porównują różne strony, które wyglądają podobnie?!?
Kurt Pfeifle
@KurtPfeifle - zdaję sobie sprawę, że to stary komentarz ... ale ludzie nie porównują obrazów na podstawie piksela; sposób, w jaki ludzie porównują różnice w obrazach, jest dość złożony, ale w dużym stopniu opiera się na rozpoznawaniu wzorców i heurystyce.
CBRF23
@ CBRF23: To prawda i jestem tego świadomy - ale ostatecznie cała ta heurystyka wciąż ma swoje korzenie w porównaniach „piksel po pikselu”. W przypadku innych heurystyk wyższego poziomu, wykonywanych z ImageMagick, zobacz inne moje odpowiedzi: jedna - dwie - trzy .
Kurt Pfeifle
@ CBRF23: ... a oryginalny plakat (at) Hocrux7 nawet wspomniał w swoim pytaniu o „pikselach” i wyraźnie nie chciał porównywać „wewnętrznej struktury” plików (mimo że jego komentarz tutaj znowu temu zaprzecza).
Kurt Pfeifle
1

W zależności od Twoich potrzeb rozwiązanie konwersji na tekst byłoby najłatwiejsze i najbardziej bezpośrednie. Uważam, że pomysł na bitmapę był całkiem fajny.

user602475
źródło
0

Oprogramowanie blubeam pdf zrobi to za Ciebie

M Jenkins
źródło
0

Możesz zbiorczo porównać pliki PDF za pomocą narzędzia Tarkware Pdf Comparer. Ale to nie jest darmowe i wymaga Adobe Acrobat.

erks
źródło