我正在尝试使用tesseract
从图像中读取文本,图片质量很高,因此tesseract
能够以95%的准确度读取文本,这对我来说是可以的但是tesseract
无法读取突出显示(选中)的文本,请参阅PIC
如何使用tesseract
阅读所选区域的文字,有没有办法识别图像中突出显示的单词?
用于从图像中读取和转换文本的代码,如下所示。
tesseract::TessBaseAPI *myOCR = new tesseract::TessBaseAPI();
//cout << "hello" << endl;
if (myOCR->Init("C:\\QTSoftware\\IODriver\\", "eng")) {
SaveLineLog(brdInd, "Unable to initialize tesseract engine", __LINE__);
return RC_TESSERACT_ENG_FAILURE;
//fprintf(stderr, "Could not initialize tesseract.\n");
//return RC_THREAD_FAILURE;
//exit(1);
}
SaveLineLog(brdInd, "tesseract engine is UP :)", __LINE__);
//strcpy_s(fileName, "C:\\TEMP\\T481Logs\\FrameOCR23_0.jpg");
FILE *pFile;
fopen_s(&pFile,fileName, "r"); // Open picture
PIX* pix; // Image format from `leptonica`
pix = pixReadStreamBmp(pFile);
fclose(pFile);
//Pix *pix = pixRead(fileName);
//Pix *pix = pixReadStreamBmp(fileName);
//cout << "Tesseract - Pix : " << pix << endl;
if (pix == NULL)
{
SaveLineLog(brdInd, "Pix failure", __LINE__);
return RC_TESSERACT_PIX_FAILURE;
}
myOCR->SetImage(pix);
char* outText = myOCR->GetUTF8Text();
答案 0 :(得分:0)
如果所有图像都具有此格式,则可以先反转颜色,然后使用阈值二值化来消除此阴影。 最好总是预处理并为OCR引擎提供干净的图像,它也可能会提高检测百分比。