Bildverarbeitung / Superlicht OCR
-
11-09-2019 - |
Frage
Ich habe 55 000 Bilddateien (sowohl JPG und TIFF-Format), die Bilder aus einem Buch sind.
Die Struktur jeder Seite ist diese:
some text
--- (horizontale Linie) ---
eine Zahl
some text
--- (horizontale Linie) ---
eine andere Nummer
some text
Es kann von null bis vier horizontalen Linien auf einer bestimmten Seite sein.
Ich brauche zu finden, was die Zahl ist, direkt unterhalb der horizontalen Linie.
ABER, Zahlen folgen streng sie an einem beginnend auf Seite eins, so um die Zahl zu finden, brauche ich nicht, es zu lesen: Ich konnte nur das Vorhandensein von horizontalen Linien erkennen, die sowohl einfacher sein sollten, und sicherer als die Seite OCR versuchen, die Zahlen zu erkennen.
Der Algorithmus wäre, im Grunde:
for each image
count horizontal lines
print image name, number of horizontal lines
next image
Die Frage ist: Was ist die beste Bild Bibliothek / Sprache sein würde, die „zählen horizontale Linien“ Teil zu tun
?Lösung
Die wahrscheinlich einfachste Weg, um Ihre Linien zu erkennen ist, mit der Hough-Transformation in OpenCV (die Wrapper für viele Sprachen hat) .
Die OpenCV Hough TRANFORM werden alle Linien im Bild erkennen und deren Winkel zurückkehren und / Stopp-Koordinaten zu starten. Sie sollten nur diejenigen halten, deren Winkel sind in der Nähe horizontal und ausreichender Länge.
Andere Tipps
Wenn Sie einen guten Kontrast haben, versuchen angeschlossenen Komponenten ausgeführt wird und das Ergebnis zu analysieren. Es kann eine Alternative zu finden, Linien, die durch Hough sein und den Fall abzudecken, wenn Ihre strukturierten Elementen etwas gekrümmt oder eine Linie Algorithmus nimmt die Linien sind Sie es nicht abholen wollen.
Verbundene Komponenten ist ein super schnell, zwei Algorithmus Raster-Scan und geben Sie eine Maske mit allen ihr angeschlossenen Elemente darin mit verschiedenen Etiketten gekennzeichnet und ausgewiesen. Sie können etwas kurz (in Bezug auf Seitenverhältnis) verwerfen. Insgesamt kann dieses allgemeinere sein, schneller, aber wahrscheinlich ein bisschen mehr beteiligt als das Laufen Hough-Transformation. Die Hough auf der anderen Seite Transformation für Kontrast Artefakte wird mehr erträglich und sogar zufällige Lücken in Linien. OpenCV hat die Funktion findContours (), die Komponenten für Sie finden.
Sie möchten vielleicht versuchen John Resig OCR und neuronale Netze in Javascript