我在iOS 8中使用Tesseract作为基于OCR的应用,但它错误地将图像中的“÷”符号转换为加号“+”符号。
例如,此图片
始终转换为文本字符串“8 + 4 + 4”。它应该是“8 + 4÷4”。
我尝试使用不同的训练数据语言文件“eng + equ”,“ita”,将“÷”添加到白名单,将ocr_engine变量设置为立方体,将图像转换为灰度或黑色&白色,将图像增大2倍和4倍。
我尝试过的所有内容总是返回加号“+”而不是分号“÷”符号。
我尝试仅使用“equ”训练的数据文件并且正确返回分割符号 - 但所有其他字符都是垃圾。
我一直在研究这个问题(谷歌,Stackoverflow)几天,但无法理解。
如何让Tesseract包含并识别除“÷”符号?
更新:
我能做的最好的事情是将AVCaptureSession预设设置为高
AVCaptureSession *session = [[AVCaptureSession alloc] init];
session.sessionPreset = AVCaptureSessionPresetHigh;
尺寸以上的拍摄图像为676×405像素。使用Tesseract OCR UIImage类别(图像命名为“source”)来对图像进行二值化:
// Binarize the source image to improve contrast (using the UIImage category provided by TesseractOCR)
UIImage *blackAndWhiteImage = [source blackAndWhite];
[self.tesseract setImage:blackAndWhiteImage];
这通常会将分割符号转换为文本“-1-”,但我看到“ - : - ”以及减号之间的其他数字和大写字符。
我可以在返回的文本中检查它。但是,不可能知道是否将返回的文本“8-1-2”视为真正的减法或“可能”除法。
答案 0 :(得分:4)
答案 1 :(得分:2)
确保您的“白名单”包含“÷”符号。
在swift中,这样做:tesseract.setVariableValue("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:;,.!-()#&÷", forKey: "tessedit_char_whitelist")
在objective-C中,这是代码:
[tesseract setVariableValue:@"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:;,.!-()#&÷" forKey:@"tessedit_char_whitelist"];
您可以根据需要自定义字符集。
答案 2 :(得分:1)
似乎符号未包含在现有数据中。您需要train表示该符号,然后将结果训练数据与现有符号结合使用。
您可以使用jTessBoxEditor等工具来协助您完成培训。
答案 3 :(得分:0)
您还可以尝试通过unicharambigs文件捕获此歧义。阅读更多 https://github.com/tesseract-ocr/tesseract/blob/master/doc/unicharambigs.5.asc
1 + 1 ÷ 0
Tesseract将其读作“可选(上述配置中的尾随0)将1字符序列'+'替换为1字符序列'÷'”。
答案 4 :(得分:0)
在Swift中,更改engineMode
对我有用
let tesseract = G8Tesseract(language: "eng")!
tesseract.engineMode = .tesseractCubeCombined