2017-06-06 14 views
0

tesseractを使用して画像からテキストを読み取ろうとしています。この画像は高品質であるため、tesseractは95%の精度でテキストを読み取ることができます。しかしtesseract強調表示されたテキスト(選択)を読み取ることができないで、私はtesseractを使用して、選択した領域からテキストを読むことができる、ある単語を識別するためにどのような方法がありますどのようにPICtesseractを使用して画像からハイライトされたテキストを読む

enter image description here

を参照してください画像で強調表示されていますか?

以下のように画像からテキストを読み込んで変換するためのコードです。 tesseract :: TessBaseAPI * myOCR = new tesseract :: TessBaseAPI();

//cout < < "hello" < < endl;

場合(myOCR->初期化( "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

使用しているコードを添付できますか?イメージをtesseractメソッドに渡す前に、何らかの前処理を行っていますか? – ZdaR

+0

私は上記のコードを 'tesseract'を呼び出してイメージからテキストを取得しています。すべてのイメージが白黒であるため、前処理が不要で、 'tesseract'が強調表示されていませんテキストのように私は前処理しようとする可能性があります。 –

答えて

0

すべての画像は、この形式を持っている場合は、最初に色を反転させてから、閾値の2値化を使用してこの影を取り除くことができます。 OCRエンジンに前処理してきれいな画像を提供する方が良い場合は、おそらく検出率も向上させるでしょう。

+0

イメージを 'tesseract'に渡す前に前処理する必要があるかもしれないことを理解していますが、イメージ内の強調表示されたテキストをどのようにして識別できますか? - thanks –

+0

@PankajMishra強調表示された部分を '読む'ことができないという問題を修正したが、これを特定するには、これ以上の情報が必要だった。 – MoustafaS

関連する問題