Android OCR tesseract: Verwendet Daten von Pixa-Objekten, um Begrenzungsrahmen anzuzeigen

8

Ich spiele gerade mit OCR auf Android. Deshalb habe ich eine kleine App mit einer Kameravorschau geschrieben und füttere nun tesearact tools (tess-two) Bilder von meiner onPreviewFrame Methode. Jetzt möchte ich die umgrenzenden Rektellen aus der OCR in meiner Kameravorschau anzeigen. Die TessBaseAPI stellt Methoden bereit, die Zeichen- / Wort-Bouding-Boxen zurückgeben. Der Typ des zurückgegebenen Objekts ist Pixa, wie in der mit tess-two gelieferten leptonica-Bibliothek.

Also meine Frage ist: Wie bekomme ich brauchbare Koordinaten, mit denen ich die Begrenzungsrahmen in meiner Kameravorschau aus den Pixa-Objekten zeichnen kann, die von getCharacters () oder getWords () aus der TessBaseAPI zurückgegeben werden?

GetCharacters () und getWords () in der BaseAPI

leptonicas Pixa-Klasse

Wichtig:

Da die Vorschau nur unterstütztes Bildformat ist, ist YUV N21 und so weit von dem, was ich gelesen habe, benötigt die tess-API ARGB_8888 Bitmaps Ich habe die folgende Umgehungsmöglichkeit in meiner onPreviewFrame-Methode, kurz bevor ich die Bitmap an die TessAPI füttere: (I Ich rotiere auch um 90 Grad im Uhrzeigersinn, weil ich die Kamera im Hochformat benutze, aber die Vorschaubilder der Kameras kommen in Querformat)

%Vor%

Also komprimiere ich im Grunde genommen das NV21-Byte [], das ich von der Kamera in ein YuvImage, dann in ein JPEG und von dort in ein Bitmap bekommen habe. Ich suchte im Internet nach der Lösung, wie Bitmap / JPEG aus dem NV21-Array zu bekommen und das war das einfachste ich gefunden habe. Diese Bitmap wird der OCR von tessearact tools zugeführt. Dies bringt mich zu meiner zweiten Frage:

Wie finde ich nach diesen Kompressionen und 90-Grad-Drehung, wo ich die Felder auf dem Bildschirm zeichnen muss? (relativ zu vor den Kompressionen und der Rotation)

Dies ist vielleicht nicht die beste oder sogar eine gute Möglichkeit, die OCR mit Live-Frames zu versorgen, ich schätze sehr viele Kommentare, andere Lösungen oder Vorschläge für Optimierungsmöglichkeiten.

Ich habe dieses Projekt vor zwei Tagen angefangen und bin ein sehr Anfänger in der Programmierung für Android und OCR. Während dieser zwei Tage hat mir diese Seite geholfen und viele Fragen, die ich bisher hatte, sehr gut beantwortet. Vielen Dank dafür und vielen Dank im Voraus, dass Sie mir bei meinem aktuellen Problem geholfen haben. Wenn Sie mehr Code sehen möchten oder Fragen haben, werde ich liefern und freue mich, alles zu beantworten, was ich kann.

Grüße

Sie können den gesamten API-Quellcode auf github durch die Pixa-Klasse durchsuchen und GetCharacters () -Links können keine weiteren Hyperlinks einfügen.

    
Jones 14.07.2012, 12:51
quelle

1 Antwort

14

TessTBaseApi.getWords().getBoxRects() liefert eine ArrayList der Begrenzungsbox Rects mit Koordinaten relativ zu Ihrem bmp Bitmap.

    
rmtheis 14.07.2012, 18:36
quelle

Tags und Links