Ich habe viele PDF-Dokumente in meinem System und manchmal bemerke ich, dass Dokumente bildbasiert sind, ohne dass sie bearbeitet werden können. In diesem Fall mache ich OCR für eine bessere Suche in Foxit PhantomPDF, wo Sie OCR in mehreren Dateien ausführen können. Ich würde gerne alle PDF-Dokumente von mir finden, die bildbasiert sind.
Ich verstehe nicht, wie der PDF-Reader erkennen kann, dass die OCR des Dokuments nicht textuell ist. Es müssen einige Felder vorhanden sein, auf die diese Leser zugreifen. Dies kann auch im Terminal erreicht werden. Diese Antwort gibt offene Vorschläge, wie man es im Thread macht. Überprüfen Sie, ob eine PDF-Datei gescannt ist :
Ihre beste Wette könnte sein, zu überprüfen, ob es Text hat und ob es funktioniert es enthält ein großes seitengroßes Bild oder viele gekachelte Bilder, die bedecke die Seite. Wenn Sie auch die Metadaten überprüfen, sollte dies am meisten abdecken Optionen.
Ich würde gerne besser verstehen, wie Sie dies effektiv tun können, denn wenn es Metafeld gibt, dann wäre es einfach. Ein solches Metafeld habe ich jedoch nicht gefunden. Ich denke, der wahrscheinlichste Ansatz besteht darin, zu prüfen, ob die Seite ein seitengroßes Bild mit OCR für die Suche enthält , weil es bereits in einigen PDF-Readern verwendet wird. Ich weiß jedoch nicht, wie ich es machen soll.
Bei der Hugh-Transformation gibt es speziell ausgewählte Parameter im Hyperquadrat des Parameterraums. Seine Komplexität $ O (A ^ {m-2}) $ wo m ist die Menge der Parameter, wo Sie sehen, dass mit mehr als dort ist das Problem schwierig. A ist die Größe des Bildbereichs. Foxit Reader verwendet höchstwahrscheinlich 3 Parameter in ihrer Implementierung. Kanten sind leicht gut zu erkennen, was die Effizienz sicherstellen kann und vor der Hugh-Transformation durchgeführt werden muss. Beschädigte Seiten werden einfach ignoriert. Andere zwei Parameter sind noch unbekannt, aber ich denke, dass sie Knoten und einige Schnittpunkte sein müssen. Wie diese Schnittpunkte berechnet werden, ist unbekannt? Die Formulierung des genauen Problems ist unbekannt.
Der Befehl funktioniert in Debian 8.5, aber ich konnte es nicht in Ubuntu 16.04 starten
%Vor% OS: Debian 8.5 64 bit
Linux-Kernel: 4.6 von Backports
Hardware: Asus Zenbook UX303UA
Zu spät für die Party, hier ist eine einfache Lösung, die impliziert, dass PDF-Dateien, die bereits Schriften enthalten, nicht nur bildbasiert sind:
%Vor%Als Einzeiler
%Vor% Erklärung:
pdffonts file.pdf
zeigt mehr als 2 Zeilen, wenn PDF Text enthält.
Gibt Dateinamen aller PDF-Dateien aus, die keinen Text enthalten.
Mein OCR-Projekt mit derselben Funktion befindet sich in Github deajan / pmOCR .
Rein aus dem OCR-Feld können wir die Hough-Transformation verwenden, um das größte Quadrat auf einer Seite zu finden, und dann berechnen wir das Verhältnis seiner Fläche und der gesamten Fläche. Wenn das Verhältnis niedrig ist, können wir denken, dass diese Seite schlampig ist. Schließlich kann der statistische Anteil der Sloping-Seiten und die Seitensumme angeben, ob es sich bei dieser PDF-Datei um gescannte PDF-Dateien handelt.
Ich weiß, dass der Prozess sehr langsam ist und der Anteil schwer zu bestimmen ist. ^ - ^