Android Tesseract无法识别信用卡号码

时间:2015-04-06 16:43:11

标签: android ocr tesseract tess-two

我一直在努力使tess-two OCR项目发挥作用,当我最终做到时,它确实识别出文字清晰,并且当有多行时。

这一点的全部意义在于,当用户拍摄照片时,我需要使用OCR 提取信用卡号

以下是信用卡号码的示例:

enter image description here

这只是我用过许多照片的一个例子。例如,使用此图像,我得到以下文字:

1238 5578 8875 5877
1238 5578 8875 5877
1238 5578 8875 5877

以下是我用于此的代码:

TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init("/mnt/sdcard/tesseract-ocr", "eng");
baseApi.setImage(bm);
baseApi.setPageSegMode(6);

String whiteList = "/1234567890";
baseApi.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, whiteList);

String recognizedText = baseApi.getUTF8Text();
baseApi.end();

非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:1)

图像的某些预处理步骤可能会使tesseract具有更好的性能。 我可以给你一整篇论文(http://wbieniec.kis.p.lodz.pl/research/files/07_memstech_ocr.pdf) 如果你有时间,如果没有,请尝试使用图像的对比度。例如。

以下是一些适合您的问题的想法: http://www.ocr-it.com/user-scenario-process-digital-camera-pictures-and-ocr-to-extract-specific-numbers

答案 1 :(得分:0)

示例图像已经适合 OCR,但据我所知,您使用的是 tesseract 的内置“eng.traineddata”模型,它不适合(在准确性/性能方面)用于信用卡扫描。 (信用卡使用字体“OCR-A”)。因此,您需要找到预训练模型并在 tessApi 初始化时替换它,或者自己从stratch 训练它。

要使用自定义字体训练 tesseract 模型,请参阅 Yash Modi 的回答: here