我正在尝试在OpenCV-Python(cv2)中实现"数字识别OCR".它仅用于学习目的.我想在OpenCV中学习KNearest和SVM功能.
我有每个数字的100个样本(即图像).我想和他们一起训练.
letter_recog.pyOpenCV示例附带了一个示例.但我仍然无法弄清楚如何使用它.我不明白什么是样本,响应等.另外,它首先加载一个txt文件,我首先不明白.
稍后搜索一下,我可以在cpp示例中找到一个letter_recognition.data.我使用它并在letter_recog.py模型中为cv2.KNearest创建了一个代码(仅用于测试):
import numpy as np
import cv2
fn = 'letter-recognition.data'
a = np.loadtxt(fn, np.float32, delimiter=',', converters={ 0 : lambda ch : ord(ch)-ord('A') })
samples, responses = a[:,1:], a[:,0]
model = cv2.KNearest()
retval = model.train(samples,responses)
retval, results, neigh_resp, dists = model.find_nearest(samples, k = 10)
print results.ravel()
Run Code Online (Sandbox Code Playgroud)
它给了我一个20000的数组,我不明白它是什么.
问题:
1)letter_recognition.data文件是什么?如何从我自己的数据集构建该文件?
2)什么results.reval()表示?
3)我们如何使用letter_recognition.data文件(KNearest或SVM)编写简单的数字识别工具?
我最近遇到了Tesseract和OpenCV.看起来Tesseract是一个成熟的OCR引擎,OpenCV可以用作创建OCR应用程序/服务的框架.
我尝试在我的一些图像上使用Tesseract,它的准确性似乎不错.后来,我遇到了一个非常简单的使用OpenCV来使用Python执行OCR的教程,并给人留下了深刻的印象.几分钟后,我完成了系统的培训,其准确性很好.但是,当然,采用这种方法意味着我需要使用大型训练集来广泛训练我的系统.
我的具体问题如下:
有什么建议?
注意:我24小时在计算机视觉领域,但我愿意花时间和精力学习先决条件.
我已经使用了Tesseract,结果还有很多不足之处.我目前正在检测非常小的图像(35x15,没有边框,但尝试添加一个带有imagemagick而没有ocr优势); 它们的范围从2个字符到5个,并且是一个非常可靠的字体,但是字符可变,只需使用图像大小校验和,或者这样就不起作用了.
除了坚持使用Tesseract或对其进行完整的定制培训外,OCR还有哪些选择? 此外,如果这与Heroku样式托管兼容将是非常有用的(至少我可以编译垃圾箱并将其推过).
我需要在.NET应用程序中使用可以识别手写的OCR组件.我们从MS Office启动并运行了MODI组件,它识别打印文本,但不识别手写.
我不介意付钱.
有没有人有任何建议?
非常感谢吉姆
我对OCR识别和Python都有点新意.
我想要实现的是从Python脚本运行Tesseract来"识别".tif中的某些特定数字.
我以为我可以为Tesseract做一些培训,但我没有在Google上找到任何类似的主题,而在SO这里也没有.
基本上我有一些.tif包含几个图像(如'箭头','花'和其他图标),我希望脚本打印输出该图标的名称.如果找到箭头,则打印"箭头".
这可行吗?