Android OCR仅使用流行的tessercat fork tess-two检测数字

时间:2015-08-08 06:08:00

标签: android ocr tesseract tess-two

我正在使用流行的OCR tessercat fork for android tess-two https://github.com/rmtheis/tess-two。我整合了所有员工,它的工作原理......

但我只需要检测数字,我现在的代码是:

TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(pathToLngFile, langName);
baseApi.setImage(bitmap);
String recognizedText = baseApi.getUTF8Text();
baseApi.end();
doSomething(recognizedText); 

从这里https://code.google.com/p/tesseract-ocr/wiki/FAQ#How_do_I_recognize_only_digits

我正在使用V3版本,并且没有代码解决方案而是一些命令行解决方案 - 与android项目无关(我认为......)。所以我尝试实现版本的解决方案< V3并添加以下行:

baseApi.SetVariable("tessedit_char_whitelist", "0123456789");

我的问题是如何处理init()?我不需要任何语言,但我仍需要初始化和aint init()方法......

编辑:更具体

我的最终目标是普通文档(不是纯Excel表格),看起来像附图(标题和3列用空格分隔)。

我的要求是在数字中有意义:能够分离和确定哪些数字属于哪个行和列。 enter image description here

谢谢,

2 个答案:

答案 0 :(得分:6)

我做了一点点不同。也许它会对某人有用。

所以你需要首先初始化API。

SELECT import_lo('hfj_resource', '/home/gpadmin/export/res_lo');

然后设置以下变量

TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(datapath, language, ocrEngineMode);

这样引擎只会检查数字。

答案 1 :(得分:3)

我想做同样的事情,经过一些研究,我决定捕捉所有,文本和数字,然后保留数字,这对我有用:

//This Replaces all except numbers from 0 to 9    
recognizedText = recognizedText.replaceAll("[^0-9]+", " "); 

现在你可以用数字做任何你想做的事。

例如,我使用此代码将所有数字分成String数组,并在TextView上显示它们

String[] justnumbers = recognizedText.trim().split(" "); //Deletes blank spaces and splits the numbers
YourTextView.setText(Arrays.toString(justnumbers).replaceAll("\\[|\\]", "")) //sets the numbers into the TextView and deletes the "[]" from the String Array

您可以看到它正常工作here

希望这有帮助。