我目前正在开发一个使用开源 OCR 库“Tesseract”的 android 应用程序来制作一个用于收据识别的应用程序。我已经让图书馆与 Tesseract 的“Tess-two”叉一起工作。我遇到的问题是识别非常不一致。即使提供了正确裁剪的好图像,识别也不是很好。我会说,当考虑到我认为理想的情况时,识别的准确率约为 90%。当提供任何数量的次优条件(昏暗的照明、模糊的图像、未裁剪等)时,我发现我通常会获得几乎 0% 的准确度。
就我的应用而言,即使是 90% 的准确率也几乎无法接受,因为我需要能够“完美”地从收据中获取准确的信息和数字,而无需担心信息读取不正确。
所以我的问题是:配置 Tess-2 以获得尽可能高的准确度的最佳方法是什么?
简而言之,这是我为设置库所做的:
//prior to running this code, I create the directory for /tessdata and copy my eng.traineddata file in there from the app's assets folder.
baseApi.setVariable("save_best_choices", "T");
baseApi = new TessBaseAPI();
baseApi.init(DATA_PATH, "eng");
baseApi.setVariable("tessedit_char_whitelist", "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$.!?/,+=-*\"'<:&"); //I was experimenting with this to try and improve accuracy, it didn't seem to help tremendously.
baseApi.setImage(photo);//photo is a bitmap that is selected from the phone's gallery.
String tmp = baseApi.getUTF8Text();
这里有什么我做错了,或者我可以做得更好吗?除了 eng.traineddata 之外,我还应该包含其他文件吗?我知道每种语言都有多个文件,但老实说,我不知道什么是什么,以及实际需要包含什么。据我所知,我得到了唯一需要的文件。我可以/应该使用“setVariable”功能修改任何其他设置吗?
此外,Tess-two 是否有任何内置支持“去歪斜”图像,或调整所提供图像的对比度?我还没有过多地使用这些技术,但这可能会有所帮助,对吧?
任何帮助表示赞赏!