Zu erkennen, wie-Text-Bereich aus Bild?
will ich erkennen text-Bereich vom Bild als einem preprocessing-Schritt für tesseract OCR engine, der Motor funktioniert gut, wenn der input nur text ist, aber wenn das Eingabebild enthält Nichttext-Inhalte, auf die es fällt, so möchte ich erkennen, die nur text-Inhalte in Bild -, irgendeine Idee, wie man das macht, wird hilfreich sein,danke.
- Ich würde gehen zu einem image-processing-Lösung. Versuchen Sie, google zum entfernen von hintergrund-Techniken.
- es ist schwer zu verstehen, Ihr problem ohne Beispiel Bild. Bitte Bild hochladen bei imageshack.Sie uns und geben Sie den link hier.
- ok, hier ist der link für ein Beispiel-Bild, das ich entfernen will, die Nicht-Text-Bereich von imageshack.us/photo/my-images/171/img0052ir.jpg, aber ich denke, dass tesseract verwaltet alle den Prozess auf seine eigene, so dass wir nicht interessieren, wie das Bild aussieht.
- Warum sind u-posting mehrere Fragen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werfen Sie einen Blick auf diese bounding-box Technik gezeigt, mit der OpenCV-code:
Eingang:
Erodiert:
Ergebnis:
Gut, ich bin nicht gut-erfahren in Bildbearbeitung, aber ich hoffe ich konnte dir helfen mit meinen theoretischen Ansatz.
In den meisten Fällen ist der text bildet paralleler, horizontaler Zeilen, wo der Raum zwischen den Reihen wird contail viele der Pixel des Hintergrunds. Dies könnte genutzt werden, um dieses problem zu lösen.
Also... wenn du verfassen jedes pixel Spalten in das Bild, erhalten Sie ein 1-pixel breites Bild als Ausgabe. Wenn die input-Bild-text enthält, wird die Ausgabe sehr wahrscheinlich zu einem periodischen Muster, wobei die dunklen Bereiche, gefolgt von helleren Bereichen wiederholt. Diese "Gruppen" dunklere Pixel wird die position angeben, von der text-Inhalt, während das hellere "Gruppen" wird, zeigen die Lücken zwischen den einzelnen Zeilen.
Sie werden wahrscheinlich feststellen, dass die helleren Bereiche viel kleiner, dass die anderen auch. Text ist viel allgemeiner, als alle anderen Bild-element, so ist es sollte leicht zu trennen.
Implementieren Sie eine Prozedur zu erkennen, diese periodischen Wiederholungen. Sobald das Skript können Sie bestimmen, dass das input-Bild hat diese Eigenschaften, es gibt eine hohe Wahrscheinlichkeit, dass es text enthält. (Aber dieser Ansatz kann nicht unterscheiden zwischen dem eigentlichen text und einfache horizontaler Streifen...)
Für den nächsten Schritt, müssen Sie einen Weg finden, um zu bestimmen, die borderies der Absätze, mit der oben genannten Methode. Ich denke über ein ziemlich dummy-Algorithmus, Hexe würde teilen der Eingabe-Bild in kleinere, schmale Streifen (50-100 px), und es würde überprüfen Sie diese Bereiche getrennt. Dann wäre es zu vergleichen, diese Ergebnisse zu erstellen eine Karte der Bereiche mit text gefüllt. Diese Methode wäre nicht so genau, aber es wahrscheinlich nicht stören, das OCR-system.
Und schließlich müssen Sie mit den text-anzeigen zum ausführen von OCR auf den gewünschten stellen nur.
Auf der anderen Seite, würde diese Methode Versagen, wenn die Eingabe von text wird gedreht, mehr als ~3-5 Grad. Es gibt eine andere backdraw, denn wenn Sie nur ein paar Zeilen, dann ist Ihr Muster-Suche wird sehr unzuverlässig. Mehr Zeilen, mehr Genauigkeit...
Grüße, G.
Ich bin neu stackoverflow.com aber ich schrieb eine Antwort auf eine Frage wie diese, die nützlich sein kann, um alle Leser, die Aktie dieser Frage. Ob oder nicht die Frage ist eigentlich ein doppelter, da dieser zuerst, ich lasse bis zum anderen. Wenn ich kopieren und einfügen, die Antwort hier, lass es mich wissen. Ich fand auch diese Frage zum ersten mal auf google, anstatt die, die ich beantwortet, so kann dies nutzen mehr Leute mit einem link. Vor allem, da bietet es verschiedene Möglichkeiten, gehen über das erste text-Bereiche. Für mich, als ich sah diese Frage, es passte nicht mein problem Fall.
Erkennen-text-Bereich in einem Bild mit python und opencv