使用tesseract从图片中读取突出显示的文本

时间:2017-06-06 23:13:54

标签: opencv image-processing ocr tesseract

我正在尝试使用tesseract从图像中读取文本,图片质量很高,因此tesseract能够以95%的准确度读取文本,这对我来说是可以的但是tesseract无法读取突出显示(选中)的文本,请参阅PIC

enter image description here

如何使用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(); 

1 个答案:

答案 0 :(得分:0)

如果所有图像都具有此格式,则可以先反转颜色,然后使用阈值二值化来消除此阴影。 最好总是预处理并为OCR引擎提供干净的图像,它也可能会提高检测百分比。