Tesseract 简单文字识别
·
最近一直在搞图形图像处理与识别,之前做了人脸检测识别和车牌识别,用的是C++和OpenCV,最终只实现了人脸检测和车牌的简单处理,最后的人脸识别和车牌号码的正确识别没有成功,搞了一段时间也没有头绪,只好先继续做其它的,可能会在某处有新的发现,等做好了,有时间整理完后会公布出来。
今天记录的是用Tesseract的文字识别,从网上资料看来,字符识别领域Tesseract还是挺不错的,但网上大部分都是c#和tesseract的资料,就先作C#的例子了。从昨天搞到现在,经历了n多坑,终于搞出来了,总结一下,如果建议,请私信,共同进步。
工具: C#(windowsForm), Tesseract 3.0.2, VS2017
- 打开vs2017 新建一个C# windowsForm项目,建一个简单的界面,包含控件 picturebox1, button1, opendialog1, lable1
- 进入button1中准备写代码。
- 安装Tesseract,我用的是NuGet安装,在里面搜索tesseract。
- 这时候注意了,只装 Tesseract,不要装 Tesseract-OCR, 不知其他人为什么要装Tesseract-OCR,因为装好这个之后, 之前装的Tesseract 引用会出现黄色的警告标志,导致不能用。还有 Tesseract我装的是 3.0.2版本,因为 3.3.0版本装上之后也出了点问题。我在这个地方被坑了一个上午,真心难啊。
- 等下面输出来源显示 Tesseract 安装完毕后,可以查看左边多出了两个文件夹 x64, x86, 而且在引用里多了一个 Tesseract的引用
- 之后再从网上下载字符集,github里 https://github.com/tesseract-ocr/tesseract/wiki/Data-Files#data-files-for-version-302
- 把下载下来的字符集放入到自己指定的文件夹下,一般都叫 Tessdata。别忘了解压缩,这里网上都没说,我以为直接用 tar.gz就行了,没解压缩,程序一直抱错到怀疑人生。。。。
- 之后就是写代码了,只要前面做对了,代码就是很简单了。由于是在公司,自己的电脑不能上网,所以先附上网上的代码,我的就是根据这个改编的,都一样的。
- 别忘了,在开头引用 using tesseract;
-
private void button1_Click(object sender, EventArgs e) { if (openFileDialog.ShowDialog() == DialogResult.OK) { //PictureBox控件显示图片 Image.Load(openFileDialog.FileName); //获取用户选择文件的后缀名 string extension = Path.GetExtension(openFileDialog.FileName); //声明允许的后缀名 string[] str = new string[] { ".jpg", ".png" }; if (!str.Contains(extension)) { MessageBox.Show("仅能上传jpg,png格式的图片!"); } else { //识别图片文字 var img = new Bitmap(openFileDialog.FileName); var ocr = new TesseractEngine("./tessdata", "eng", EngineMode.TesseractAndCube); var page = ocr.Process(img); label1.Text = page.GetText(); } } } - 代码很简单,但不能识别倾斜和模糊的字体,需要进行优化。
以上就是自己做文字识别的一点心得,有比较好的建议的话欢迎一块讨论,共同进步。
更多推荐


所有评论(0)