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

Android OCR仅使用流行的tessercat fork tess two检测数字,android,ocr,tesseract,tess-two,Android,Ocr,Tesseract,Tess Two,我正在为android tess 2使用流行的OCR tessercat fork。我整合了所有的员工和it工作等等 但我只需要检测数字,目前我的代码是: TessBaseAPI baseApi = new TessBaseAPI(); baseApi.init(pathToLngFile, langName); baseApi.setImage(bitmap); String recognizedText = baseApi.getUTF8Text(); baseApi.end(); doSo

我正在为android tess 2使用流行的OCR tessercat fork。我整合了所有的员工和it工作等等

但我只需要检测数字,目前我的代码是:

TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(pathToLngFile, langName);
baseApi.setImage(bitmap);
String recognizedText = baseApi.getUTF8Text();
baseApi.end();
doSomething(recognizedText); 
从这里开始

我使用的是V3版本,没有代码解决方案,而是一些命令行解决方案——与android项目无关(我想…)。因此,我尝试实现版本
baseApi.SetVariable("tessedit_char_whitelist", "0123456789");
我的问题是如何处理init()?我不需要任何语言,但仍然需要初始化&aintinit()方法

编辑:更具体一点

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

我的要求是理解数字:能够分离并确定哪些数字属于哪一行和哪一列。


谢谢,

我也想这么做,经过一点研究,我决定捕获所有文本和数字,然后只保留这些数字,这对我很有用:

//This Replaces all except numbers from 0 to 9    
recognizedText = recognizedText.replaceAll("[^0-9]+", " "); 
现在你可以用这些数字做任何你想做的事情

例如,我使用此代码将所有数字分隔成一个字符串数组,并在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
你可以看到它在工作


希望这有帮助。

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

因此,您需要首先初始化API

TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(datapath, language, ocrEngineMode);
然后设置以下变量

baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_SINGLE_LINE);
baseApi.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST, "!?@#$%&*()<>_-+=/:;'\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
baseApi.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, ".,0123456789");
baseApi.setVariable("classify_bln_numeric_mode", "1");
baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_单线);
baseApi.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST,“!?@$%&*()”、“+=/:”\“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”);
baseApi.setVariable(TessBaseAPI.VAR_CHAR_白名单,”,0123456789“);
baseApi.setVariable(“分类”模式、“1”);

这样,引擎将只检查数字。

谢谢,它工作了!但是结果是错误的…识别不如文本好。错误结果的解决方案是什么?