Sie müssen zunächst eine Möglichkeit haben, die 1000 Dateien mit den 300 Dateien zu ordnen.
Im einfachsten Fall sagen Sie "CIDOC Ontology 2.0 (1) .pdf", "CIDOC Ontology 2.0 (2) .pdf" und "CIDOC Ontology 2.0 (3) .pdf" einerseits und "CIDOC Ontology". pdf "auf der anderen Seite.
Die besten Ansätze, die ich herausfinden kann, sind folgende:
Extrahieren Sie mit
pdftk
oderpdf2json
die Anzahl der Seiten der 1000-Gruppe und prüfen Sie, ob die Summe der 300-Gruppe entspricht:12, 9, 10 vs. 31 = OK 12, 9, 10 vs 22 = BAD (and you might suspect section 2 is missing)
Diese Methode ist ziemlich einfach und erkennt nicht, dass drei Abschnitte nicht in Ordnung sind.
Mit
pdf2ps
undps2ascii
, Textversionen aller Dateien erstellen. Abhängig vom PDF-Prozess sind diese möglicherweise fast unleserlich, aber es spielt keine Rolle: Mit etwas Glück hat das Werkzeug, das zum Zusammenführen der Dateien verwendet wird, die Textmetriken und die Gruppierung nicht geändert. Wenn dies der Fall ist, wird die Verkettung der drei Dateien der vierten Datei sehr ähnlich sein (und wenn nicht, werden Sie sie als Anomalie markieren). Also sollten diese Heuristiken funktionieren:- Die Summe der Ausgaben von "wc" aus den drei Dateien ist der Ausgabe aus der vierten Datei gleich (oder sehr nahe).
- cat'ting der drei Textdateien oder der vierten Datei über cat file1 file2 file3 | sed -e "s # \ s # \ n # g" | sort sollte fast identische Wortlisten ergeben (die Ausgabe von
diff -Bbawd
sollte nicht mehr als drei oder vier Zeilen umfassen; idealerweise keine). Wenn Sie die| sort
Phase weglassen, sollten Abschnitte außerhalb der Reihenfolge erkennbar sein: Wenn die sortierte Prüfung übereinstimmt und die nicht sortierte nicht, sind Sie in einer Situation, in der der Abschnitt nicht in der richtigen Reihenfolge ist.
Der sed
Teil teilt die Wörter auf, was auch dann hilfreich sein kann, wenn das Koaleszenzwerkzeug den Text etwas geändert hat. Eine Änderung im Kerning, wobei sich herausstellte, dass die Wörter innerhalb des PDF-Dokuments unterschiedlich aufgeteilt wurden ("Homöostase" ist zu "ho meos tas is" von "home osta sis" geworden), wird dies selbst unzureichend machen. aber es ist nicht so wahrscheinlich.
Die Schwierigkeit, die ich sehe, besteht darin, die Rohdateien mit dem Finale zu vergleichen. Da ich jeweils ein Beispiel habe, könnte ich wahrscheinlich ein Skript ausarbeiten, um den Vergleich durchzuführen.