OpenCVとTesseractを使用して画像からテキストを抽出しようとしています。私は、テキスト領域を検出し、バウンディングボックスを使用してそれらを区切りました。しかし今では、境界ボックスをTesseractに渡す方法を見つけることができません。OpenCVバウンディングボックスで画像を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;
}
バウンディングボックスで非常に良い結果が得られました。バウンディングボックスと画像:
そしてはcv::text::OCRTesseract::run
試みたが、それが動作するようには思えません。
誰でもアイデアはありますか?
編集:会社の私は私に尋ねられたインターンシップにいるので、ほとんどのコードを削除する必要がありました。しかし、これは私の年末プロジェクトの終わりです。その年が終わるとすぐに、プロジェクト全体のgithubリンクで投稿を編集します。
トリミングされた画像を渡せませんか? – Miki
このコードには切り抜かれた画像はありません。テキスト領域のみを検出して輪郭線を作成する/ – user3491634
はい、表示されます...各矩形でイメージをトリミングできず、各トリミングをtesseractに渡すことはできませんか? – Miki