Potrzebuję znaleźć różnicę między dwoma plikami pdf. Czy jakiekolwiek narzędzie powiązane z pythonem ma funkcję, która bezpośrednio daje różnicę w 2 plikach PDF?Jak uzyskać różnicę dwóch plików PDF w python?
Odpowiedz
Co masz na myśli przez "różnicę"? Różnica w tekście pliku PDF lub zmiana układu (na przykład osadzona grafika została zmieniona). Pierwsza jest łatwa do wykrycia, druga jest prawie niemożliwa do uzyskania (PDF jest BARDZO skomplikowanym formatem plików, który oferuje nieskończone możliwości formatowania plików).
Jeśli chcesz uzyskać różnicę tekstu, po prostu uruchom narzędzie PDF do tekstu na dwóch plikach PDF, a następnie użyj wbudowanej biblioteki różnicowej Pythona, aby uzyskać różnicę w przekonwertowanych tekstach.
To pytanie dotyczy konwersji tekstu na format PDF w python: Python module for converting PDF to text.
Niezawodność tej metody zależy od generatorów PDF, z których korzystasz. Jeśli używasz np. Adobe Acrobat i niektóre programy do tworzenia plików PDF oparte na Ghostscript, aby utworzyć dwa pliki PDF z dokumentu SAME Word, nadal można uzyskać różnicę, mimo że dokument źródłowy był identyczny.
Dzieje się tak dlatego, że istnieje wiele sposobów kodowania informacji z dokumentu źródłowego do pliku PDF, a każdy konwerter stosuje inne podejście. Często konwerter plików PDF na tekst nie może znaleźć prawidłowego przepływu tekstu, szczególnie w przypadku złożonych układów lub tabel.
Wystarczy tekst. Generator PDF nie powinien stanowić problemu. – Goutham
Jeśli potrzebujesz obsługi obrazów, możesz wyodrębnić pliki JPG z pliku pdf: http://nedbatchelder.com/blog/200712/extracting_jpgs_from_pdfs.html lub przekonwertować plik pdf na obraz i porównać go. –
to sprawdzić, może to być przydatne: http://pybrary.net/pyPdf/
pyPdf nie był bardzo solidny w moich testach.rozbił się na plikach PDF stworzonych przez Illustrator/InDesign i inne programy do rysowania wektorowego. Jednak może to być ok dla prostych plików PDF z aplikacji pakietu Office. O wiele mocniejszą alternatywą jest pdftotext z zestawu narzędzi xpdf. – fbuchinger
Nie znam przypadku użycia, ale dla testów regresji skrypt, który generuje PDF za pomocą ReportLab, robię diff plików PDF przez
- Konwersja każda strona do obrazu za pomocą ghostsript
- Diffing każdą stronę przed obrazem strony standardowego formatu PDF, używając PIL
np
im1 = Image.open(imagePath1)
im2 = Image.open(imagePath2)
imDiff = ImageChops.difference(im1, im2)
Działa to w moim przypadku do zgłaszania zmian wprowadzonych w wyniku zmian kodu.
Czy jest jakiś odnośnik do twojego kroku nr 1? – yucer
Spełnione to samo pytanie w moim zaszyfrowanym unittest pdf, ani pdfminer, ani pyPdf nie działa dobrze dla mnie.
Oto dwie komendy (pdftocairo, pdftotext) działające idealnie na moim teście. (Ubuntu Instalacja: apt-get install Poppler-utils)
można uzyskać zawartość PDF poprzez:
from subprocess import Popen, PIPE
def get_formatted_content(pdf_content):
cmd = 'pdftocairo -pdf - -' # you can replace "pdftocairo -pdf" with "pdftotext" if you want to get diff info
ps = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
stdout, stderr = ps.communicate(input=pdf_content)
if ps.returncode != 0:
raise OSError(ps.returncode, cmd, stderr)
return stdout
Wydaje pdftocairo można przerysować plików pdf, pdftotext można wyodrębnić cały tekst.
a następnie można porównać dwa pliki pdf:
c1 = get_formatted_content(open('f1.pdf').read())
c2 = get_formatted_content(open('f2.pdf').read())
print(cmp(c1, c2)) # for binary compare
# import difflib
# print(list(difflib.unified_diff(c1, c2))) # for text compare
- 1. Shell skrypt, aby uzyskać różnicę w dwóch terminach
- 2. Jak obliczyć różnicę dwóch miar kątowych?
- 3. Jak znaleźć różnicę między danymi dwóch kolumn?
- 4. Jak uzyskać różnicę działającą jak git-diff?
- 5. Jak uzyskać różnicę między dwoma DataTables
- 6. Jak mogę porównać wyjście dwóch poleceń uniksowych, aby znaleźć różnicę?
- 7. Porównywanie dwóch plików tekstowych w pythonie
- 8. Jak uzyskać różnicę dni w gałązce
- 9. Jak uzyskać różnicę czasu w milisekundach
- 10. Python: Porównując poszczególne kolumny w dwóch csv plików
- 11. Jak programowo otwierać pliki PDF w domyślnym czytniku plików PDF?
- 12. Jak uzyskać ładną różnicę wizualną dla svn?
- 13. Jak dołączyć do plików PDF w R?
- 14. Jak uzyskać różnicę między dwoma elementami DataFrames?
- 15. Średnik w języku Python robi różnicę
- 16. JQuery Oblicz różnicę dnia w dwóch datach tekstowych
- 17. Scalanie plików PDF
- 18. R uzyskać różnicę dat w latach (zmiennoprzecinkowa)
- 19. Jak uzyskać różnicę w czasie w Doctrine Query Language (dql)?
- 20. Jak uzyskać migawkę UITableView w formacie PDF
- 21. Jak uzyskać przecięcie dwóch CGPath?
- 22. Gdzie można uzyskać certyfikat do cyfrowego podpisywania plików PDF?
- 23. Uzyskaj różnicę dat w VB.NET
- 24. Jak uzyskać maksimum dwóch wartości w MySQL?
- 25. drukowania plików PDF z PDFSharp
- 26. Jak uzyskać różnicę między dwoma QDateTimes w milisekundach?
- 27. Jak uzyskać różnicę (tylko dodatki) między dwoma plikami w Linuksie
- 28. Jak uzyskać różnicę czasu (w godzinach) między 2 datami
- 29. scalanie dwóch plików
- 30. Jak porównać zmodyfikowaną datę dwóch plików w pythonie?
Diff tekstu lub całej zawartości lub rozmiar? – Steen
Tekst zostanie wykonany. – Goutham