2009-08-06 9 views
2

Ich habe 55 000 Bilddateien (im JPG- und TIFF-Format), die Bilder aus einem Buch sind.Bildverarbeitung/Superlicht OCR

Die Struktur jeder Seite ist dies:

etwas Text

--- (horizontale Linie) ---

eine Reihe

etwas Text

--- (horizontale Linie) ---

eine andere Nummer

some text

Es von null bis vier horizontalen Linien auf einer bestimmten Seite sein kann.

Ich muss herausfinden, was die Nummer ist, nur unter der horizontalen Linie.

ABER, Zahlen streng aufeinander folgen, beginnend bei eins auf der ersten Seite, so um die Nummer zu finden, muss ich es nicht lesen: Ich konnte nur das Vorhandensein von horizontalen Linien erkennen, die beide sein sollten einfacher und sicherer als zu versuchen, die Seite zu erkennen, um die Zahlen zu erkennen.

würde der Algorithmus, im Grunde sein:

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?

Antwort

7

wahrscheinlich der einfachste Weg, um Ihre Linien zu erkennen, wird mit dem Hough transform in OpenCV (die Wrapper für viele Sprachen hat) zu versuchen.

Die OpenCV Hough-Transformation erkennt alle Linien im Bild und gibt ihre Winkel und Start/Stopp-Koordinaten zurück. Sie sollten nur diejenigen halten, deren Winkel nahe der Horizontalen und von ausreichender Länge sind.

O'Reillys Lernen OpenCV explains in detail the function's input and output (S.156).

-2
+4

Warum sollte er OCR brauchen, wenn er nur die Zeilen zählen muss? –

+1

Die Frage war, wie man das Problem ohne OCR – Ivan

+0

@ kigurai @ Ivan, wenn OCR zu lösen, trivial ist, warum nicht. Er geht davon aus, dass es einen Weg gibt, "der einfacher und sicherer sein sollte, als zu versuchen, die Seite zu erkennen, um die Zahlen zu erkennen." – pageman

0

Wenn Sie einen guten Kontrast haben, versuchen Sie angeschlossene Komponenten auszuführen und das Ergebnis zu analysieren. Es kann eine Alternative zum Suchen von Linien durch Hough sein und den Fall abdecken, wenn Ihre strukturierten Elemente ein wenig gekrümmt sind oder ein Linienalgorithmus die Linien aufnimmt, die Sie nicht aufnehmen möchten.

Verbundene Komponenten ist ein super schneller, zwei Raster-Scan-Algorithmus und gibt Ihnen eine Maske mit allen verbundenen Elementen in sie mit verschiedenen Bezeichnungen markiert und berücksichtigt. Sie können alles kurz (in Bezug auf das Seitenverhältnis) verwerfen. Insgesamt kann dies allgemeiner, schneller, aber wahrscheinlich etwas komplizierter sein als die Hough-Transformation. Die Hough-Transformation wird dagegen tolerierbarer für Kontrastartefakte und sogar zufällige Linienlücken. OpenCV hat die Funktion findContours(), die Komponenten für Sie finden.