|
|
@@ -275,54 +275,58 @@ bool CBitmapHelper::OcrRect(tesseract::TessBaseAPI& tess, LPRECT lpRect, std::st
|
|
|
//正向的内存图象数据
|
|
|
GetBitmapBits(hBitmap, bi.biSizeImage, lpmem);
|
|
|
|
|
|
+ SaveBitmapToFile(hBitmap, L"C:\\aaa.bmp");
|
|
|
+
|
|
|
//清除
|
|
|
- DeleteDC(hScrDC);
|
|
|
- DeleteDC(hMemDC);
|
|
|
+ //DeleteDC(hScrDC);
|
|
|
+ //DeleteDC(hMemDC);
|
|
|
|
|
|
//开始测试ocr
|
|
|
- tess.SetImage((const unsigned char*)lpmem, bm.bmWidth, bm.bmHeight, 4, bm.bmWidthBytes);
|
|
|
+ //tess.SetImage((const unsigned char*)lpmem, bm.bmWidth, bm.bmHeight, 4, bm.bmWidthBytes);
|
|
|
+ Pix *image = pixRead("C:\\aaa.bmp");
|
|
|
+ tess.SetImage(image);
|
|
|
tess.Recognize(0);
|
|
|
|
|
|
const char* utf8_ret = tess.GetUTF8Text();
|
|
|
|
|
|
- char szRes[10] = { 0 };
|
|
|
- int j = 0;
|
|
|
-
|
|
|
- for (int i = 0; i < 255; i++)
|
|
|
- {
|
|
|
- if ((utf8_ret[i] >= '0' && utf8_ret[i] <= '9') || utf8_ret[i] == '.')
|
|
|
- {
|
|
|
- //是有效的数字,就保存下来
|
|
|
- szRes[j] = utf8_ret[i];
|
|
|
- j++;
|
|
|
-
|
|
|
- if (j == 9)
|
|
|
- {
|
|
|
- //已经装了9个了
|
|
|
- result = szRes;
|
|
|
-
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else if (utf8_ret[i] == 32)
|
|
|
- {
|
|
|
- //如果是空格,直接忽略
|
|
|
- }
|
|
|
- else if (utf8_ret[i] == '\n')
|
|
|
- {
|
|
|
- //换行键,到了末尾了
|
|
|
- result = szRes;
|
|
|
-
|
|
|
- break;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //既不是有效数字,也不是空格和换行,那么就是出现了非法字符
|
|
|
- result = "0.00";
|
|
|
-
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ //char szRes[10] = { 0 };
|
|
|
+ //int j = 0;
|
|
|
+
|
|
|
+ //for (int i = 0; i < 255; i++)
|
|
|
+ //{
|
|
|
+ // if ((utf8_ret[i] >= '0' && utf8_ret[i] <= '9') || utf8_ret[i] == '.')
|
|
|
+ // {
|
|
|
+ // //是有效的数字,就保存下来
|
|
|
+ // szRes[j] = utf8_ret[i];
|
|
|
+ // j++;
|
|
|
+
|
|
|
+ // if (j == 9)
|
|
|
+ // {
|
|
|
+ // //已经装了9个了
|
|
|
+ // result = szRes;
|
|
|
+
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // else if (utf8_ret[i] == 32)
|
|
|
+ // {
|
|
|
+ // //如果是空格,直接忽略
|
|
|
+ // }
|
|
|
+ // else if (utf8_ret[i] == '\n')
|
|
|
+ // {
|
|
|
+ // //换行键,到了末尾了
|
|
|
+ // result = szRes;
|
|
|
+
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // //既不是有效数字,也不是空格和换行,那么就是出现了非法字符
|
|
|
+ // result = "0.00";
|
|
|
+
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ //}
|
|
|
|
|
|
delete[] lpmem;
|
|
|
tess.Clear();
|