我目前正在开发一个android应用程序,它利用开源OCR库"Tesseract“来制作一个收据识别应用程序。我让这个库与Tesseract的"Tess-two“分支一起工作。我遇到的问题是,这种认识非常不一致。即使提供了正确裁剪的好图像,识别效果也不是很好。我要说的是,在我认为理想的情况下,识别准确率约为90%。当提供任何数量的次优条件时(暗淡的灯光、模糊的图像、未裁剪等)我发现我经常会得到几乎0%的准确率。
对于我的应用程序来说,即使90%的准确率也是令人无法接受的,因为我需要能够“完美”地从收据中获得确切的信息和数字,而不需要担心不正确地读取信息。
所以我的问题是:配置Tess-two的最佳方法是什么,以获得尽可能高的准确性?
简而言之,这就是我设置这个库所做的工作:
//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是否有任何内置的支持“去偏斜”图像,或调整提供的图像的对比度?我还没有过多地使用这两种技术,但这可能会有所帮助,对吧?
如有任何帮助,我们不胜感激!
https://stackoverflow.com/questions/38105814
复制相似问题