Wie finde ich alle bildbasierten PDFs?

8

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.

Kantenerkennung und Hugh-Transformation über die Antwort

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.

Testen von Deajans Antwort

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

    
Léo Léopold Hertz 준영 04.12.2015, 16:31
quelle

2 Antworten

2

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%
  • pdffonts listet alle eingebetteten Schriftarten in einer PDF-Datei auf. Wenn das Dokument durchsuchbaren Text enthält, muss es auch Schriftarten enthalten, damit pdffonts sie auflistet. Überprüfen, ob das Ergebnis weniger als drei Zeilen hat, liegt daran, dass der Header von pdffonts aus 2 Zeilen besteht. Daher haben alle Ergebnisse, die unter 3 Zeilen liegen, keine eingebetteten Schriftarten. AFAIK, es sollte keine falschen Positive geben, auch wenn das eher eine Frage an die Entwickler von pdffonts ist.

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 .

    
deajan 11.09.2016, 15:45
quelle
1

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. ^ - ^

    
xu2mao 09.12.2015 07:18
quelle

Tags und Links