Ich versuche, Text aus Bild mit OpenCV und Tesseract extrahieren. Ich habe es geschafft, die Textbereiche zu erkennen und Begrenzungsrahmen zu verwenden, um sie zu begrenzen. Aber jetzt kann ich nicht herausfinden, wie man die Begrenzungsboxen an Tesseract weitergibt.Passing Bild mit OpenCV Bounding-Boxen zu Tesseract OCR
for(int idx = 0; idx >= 0; idx = hierarchy[idx][0])
{
Rect rect = boundingRect(contours[idx]);
Mat maskROI(mask, rect);
maskROI = Scalar(0, 0, 0);
// fill the contour
drawContours(mask, contours, idx, Scalar(255, 255, 255), CV_FILLED);
// ratio of non-zero pixels in the filled region
double r = (double)countNonZero(maskROI)/(rect.width*rect.height);
if (r > .45 /* assume at least 45% of the area is filled if it contains text */
&&
(rect.height > 8 && rect.width > 8) /* constraints on region size */
/* these two conditions alone are not very robust. better to use something
like the number of significant peaks in a horizontal projection as a third condition */
)
{
rectangle(rgb, rect, Scalar(0, 255, 0), 2);
}
}
imwrite(OUTPUT_FOLDER_PATH + string("/rgb.jpg"), rgb);
return 0;
}
Ich bekomme sehr gute Ergebnisse mit den Bounding-Boxen. Bild mit Begrenzungsboxen:
Und dann versuchte cv::text::OCRTesseract::run
aber das scheint nicht zu funktionieren.
Jeder hat eine Idee?
EDIT: Ich hatte die meisten der Code zu entfernen, weil die Firma i in einem Praktikum bin mit bat mir. Aber das ist für mein Projekt zum Jahresende. Sobald ich das Jahr beendet habe, werde ich den Post mit einem GitHub Link für das ganze Projekt bearbeiten.
Können Sie die beschnittenen Bilder nicht weitergeben? – Miki
In diesem Code ist kein zugeschnittenes Bild enthalten. Es erkennt nur die Textbereiche und dann konturiert sie/ – user3491634
Ja, ich sehe ... Können Sie nicht das Bild auf jedem Rechteck zuschneiden, und jede Ernte zu tesseract übergeben? – Miki