Çok sayıda PDF dosyasını karşılaştırmak için bir araç mı? [kapalı]


84

Optik içeriği için çok sayıda PDF dosyasını karşılaştırmam gerekiyor. PDF dosyaları farklı platformlarda ve yazılımın farklı sürümleriyle oluşturulduğundan yapısal farklılıklar vardır. Örneğin:

  • metin yığınları farklı olabilir
  • yazma sırası farklı olabilir
  • konum bazı piksellerde farklı olabilir

İçeriği bir insan gibi karşılaştırmalı, iç yapıyı değil. Kullandığımız PDF oluşturucunun farklı sürümleri arasındaki gerilemeleri test etmek istiyorum.


3
Kısmi bir cevap, pdftotext kullanmak ve içerdiği metni karşılaştırmak olacaktır .
Sklivvz

Ancak bu, satırlar, kutular, resimler, çizelgeler vb. Gibi metin olmayan tüm bilgileri göz ardı edecektir. Ayrıca, metnin optik konumlarını başka yapısal konumu da göstermediğini düşünüyorum.
Horcrux7

Katılıyorum, bu yeterli bir kriter değil. Öte yandan gerekli bir kriter olduğu için birim testi olarak yeterlidir.
Sklivvz

Aslında daha önce hiç sizin durumunuzda olmadım, ancak PDF'leri karşılaştırmak için ExamDiff Pro'yu denedim ve benim için çalıştı.
cubex

Daha sonra her zaman daha iyi bir birim testi ekleyebilirsiniz!
Sklivvz

Yanıtlar:


39

Çünkü yazdığımız böyle bir araç yok. İ-net PDF içerik karşılaştırıcısını indirebilir ve kullanabilirsiniz. Umarım aynı problemde başkalarına yardımcı olur. Bununla ilgili sorun yaşarsanız veya bize geri bildirimde bulunursanız, destek ekibimizle iletişime geçebilirsiniz.

görüntü açıklamasını buraya girin


Bu aracın avantajı, ne saf bir metin karşılaştırıcısı ne de bir görüntü karşılaştırıcısı olmamasıdır. Yapıya göre karşılaştırır, içeren öğelerin "aynı" olup olmadığını kontrol eder - böylece karşılaştırılan PDF'lerinizin% 100 eşleşmesi gerekmez, ancak tanımlanabilir bir benzerlik içinde olması gerekir. Ve ücretsizdir.
gama

Bunu da tavsiye ederim! Bir belgeye düştü, ben de onlara gönderdim. Tamir ettiler! : DI harika hissediyorum. Farklı görüntüler oluşturabilir veya size konsolda metinsel bir rapor verebilir.
Janus Troelsen

4
@gamma Bu uygulama nerede ücretsiz? Yıllık en az 200 USD maliyeti (!). 30 gün boyunca yalnızca bir kez ücretsizdir. Onunla yapacağım şey için çok pahalı.
ygoe

@LonelyPixel Evet, haklısın. Sürüm 1.0 ücretsizdir (2010-10-14 itibariyle). Üzerinde biraz değişiklik yaptık ve artık ücretli bir araç (2012-10). Ancak herhangi bir sınırlama olmaksızın 30 gün boyunca deneyebilirsiniz. Gerçekten pek çok yeni özellik, kararlılık ve güvenilirlik kazandı. Umarım hala bakarsınız;)
gama

Benim de pdf dosyalarını karşılaştırmam gerekiyor - apache pdfbox kullanarak bir kavanoz buldum. Örneğin ve indirme için bu testautomationguru.com/… 'ye bakın.
vins

21

Aslında bir diffpdf aracı var.

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

Zayıflığı, eklemeler yeni metni kısmen yeni bir sayfaya kaydırdığında iyi tepki vermemesidir. Örneğin, eski sayfa 4, 5. sayfanın sonu ve 6. sayfanın başlangıcıyla karşılaştırılacaksa, iki dilimi ayrı ayrı karşılaştırmak için parametreleri kaydırmanız gerekir.


1
Orijinal açık kaynak versiyonu hala qtrac.eu/diffpdf-foss.html
Tobias Kienzler

13

Ev yapımı bir senaryo kullandım ki

  • iki PDF'deki tüm sayfaları bitmaplere dönüştürür
  • PDF 1'den beyaz üzerine kırmızıya renk sayfaları
  • PDF 2 sayfalarında beyazı saydam olarak değiştirir
  • PDF 2'deki her sayfayı, PDF 1'deki ilgili sayfanın üstüne yerleştirir
  • çoklu çekirdek üzerinde paralel olarak dönüştürme / renklendirme ve üst üste bindirmeyi çalıştırır

Kullanılan yazılım:

  • PDF'den bitmap'e dönüştürme için GhostScript
  • Boyama, şeffaflık ve kaplama için ImageMagick
  • paralel süreçleri senkronize etmek için inotify
  • sonucu incelemek için herhangi bir PNG özellikli resim görüntüleyici

Artıları:

  • basit uygulama
  • kullanılan tüm araçlar açık kaynaklıdır
  • düzende küçük farklılıklar bulmak için harika

Eksileri:

  • dönüşüm yavaş
  • PDF'ler arasındaki büyük farklar (örneğin sayfalandırma) karmaşaya neden oluyor
  • bitmapler yakınlaştırılamaz
  • yalnızca siyah beyaz metin ve diyagramlarda işe yarar
  • kullanımı kolay GUI yok

Aynı şeyi PDF / PostScript seviyesinde yapacak bir araç arıyordum.

Komut dosyamızın yardımcı programları nasıl çağırdığı aşağıda açıklanmıştır (ImageMagick'in PDF-> PNG dönüşümü yapmak için perde arkasında GhostScript kullandığını unutmayın):

$ 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
Neden tam senaryoyu paylaşmıyorsunuz?
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
Birleştirme

Burada diske geçici dosyalar yazmayan ve Ghostscript'ten daha hızlı olan Poppler'in pdftoppm'sini kullanan bir komut dosyası var: gist.github.com/brechtm/891de9f72516c1b2cbc1 . Bir pdfdiffdizindeki PDF'lerin her sayfası için bir JPG çıkarır ve ayrıca iki PDF arasında farklılık gösteren sayfaların numaralarını yazdırır.
Brecht Machiels

12

Bunu burada göremiyor gibi görünüyorum, işte burada: süper kullanıcı aracılığıyla : İki PDF dosyası arasındaki farklar nasıl karşılaştırılır? (yanıt # 229891, @slestak tarafından) , orada

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

(Ubuntu Natty için geliştirme adımları get-diff-pdf.sh içinde bulunabilir )

Gördüğüm kadarıyla, temelde her sayfanın metin / grafiklerini pdf (ler) de kaplayarak, herhangi bir değişiklik olup olmadığını kolayca görmenizi sağlar ...

Şerefe!


9

Biz de kullandım pdftotext PDF'lerinin ASCII versiyonlarını oluşturmak için (Sklivvz en cevaba bakınız) ve wdiff bunları karşılaştırmak.

-layoutOkunabilirliği artırmak ve düzendeki değişiklikler hakkında fikir edinmek için pdftotext'in anahtarını kullanın .

Wdiff'ten güzel renkli çıktı almak için şu sarmalayıcı betiğini kullanın:

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

Bence en iyi yaklaşımınız, PDF'yi makul bir çözünürlükte görüntülere dönüştürmek ve bir görüntü karşılaştırması yapmak olacaktır.

PDF'den görüntüler oluşturmak için Adobe PDF Library'yi veya pdf dosyalarını tiff dosyalarına dönüştürmenin en iyi yolu olarak önerilen çözümü kullanabilirsiniz .

Oluşturulan TIFF dosyalarını karşılaştırmak için GNU tiffcmp'yi buldum (Windows için GnuWin32 tiff'in parçası ) ve tiffinfo iyi bir iş çıkardı. Tiffcmp -l'yi kullanın ve herhangi bir fark bulmak için çıktı satırlarının sayısını sayın. Küçük miktarda içerik değişikliğinden memnunsanız (ör. Kenar yumuşatma farklılıkları), toplam piksel sayısını saymak için tiffinfo kullanın ve ardından bir yüzde farkı değeri oluşturabilirsiniz.

Bu arada, yapının değişmediği basit PDF karşılaştırması yapan herkes için komut satırı farkını kullanmak ve belirli kalıpları göz ardı etmek mümkündür, örneğin GNU diff 2.7 ile:

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

Bu hala, oluşturulan yazı tipi adlarındaki değişiklikleri her zaman yakalayamaması sorununa sahiptir.


2 görüntünün karşılaştırılmasının, PDF dosyalarını kendi kendine karşılaştırmaktan daha karmaşık olduğunu düşünüyorum.
Horcrux7

Resimleri karşılaştırmak GnuWin32 tiffcmp ile yapılabilir. Bunu detaylandırmak için cevabımı güncelleyeceğim.
danio

1

Ürünümüz, PDF Karşılaştırıcı - http://www.premediasystems.com/pdfc.html "bunu oldukça zarif ve verimli bir şekilde gerçekleştirecektir. Ücretsiz değildir ve yalnızca bir Mac OS X uygulamasıdır.


Bu araç, piksel piksel karşılaştırır. Bu çok basit. Soru, tıpkı bir insanın yaptığı gibi bir karşılaştırmaydı.
Horcrux7

1
@ Horcrux7: Peki insan gözleri benzer görünen farklı sayfaları 'piksel piksel' karşılaştırmaktan başka nasıl karşılaştırabilir?!?
Kurt Pfeifle

@KurtPfeifle - Bu eski bir yorumdur farkında ... ama insan do not piksel bazında bir pikselin görüntüleri karşılaştırmak; İnsanların görüntülerdeki farklılıkları karşılaştırma yöntemi oldukça karmaşıktır, ancak büyük ölçüde örüntü tanıma ve buluşsal yöntemlere dayanır.
CBRF23

@ CBRF23: Doğru ve bunun farkındayım - ancak sonuçta tüm bu buluşsal yöntemler hala "piksel piksel" karşılaştırmalara dayanıyor. Bazı başka, daha yüksek düzey sezgisel tarama için, ImageMagickdiğer cevaplarımdan bazılarına bakın: bir - iki - üç .
Kurt Pfeifle

@ CBRF23: ... ve orijinal afiş, (at) Hocrux7 sorusunda "piksellerden" bahsetti ve karşılaştırılan dosyaların "iç yapısını" istemedi (buradaki yorumu yine çelişse de).
Kurt Pfeifle

1

İhtiyaçlarınıza bağlı olarak, metne dönüştürme çözümü en kolay ve en doğrudan çözüm olacaktır. Bitmap fikrinin oldukça havalı olduğunu düşündüm.



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.