C# 使用Tesseract实现OCR图像识别文字信息的例子


c#使用Tesseract实现OCR图像文字识别

首先使用 NuGet 添加Tesseract的工具包

使用 NuGet 添加Tesseract的工具包

接下来就是使用OCR识别的代码

Bitmap ImageRecognitionBitmap=XXX;//需要识别的位图
//模板文件目录 【经过多次实验貌似这个插件的模板文件存放的目录名称必须为 “tessdata” 否则识别就会报错】
string TessdataDirectoryName = “tessdata”;
//模板文件名称(不需要后缀名)
string TraineddataName = System.IO.Path.GetFileNameWithoutExtension(TraineddataFile);

using (var engine = new TesseractEngine(TessdataDirectoryName, TraineddataName, EngineMode.Default))
{
       using (var page = engine.Process(ImageRecognitionBitmap, PageSegMode.Auto))
       {
       ResultText = page.GetText();//识别结果
       }
       engine.Dispose();
}

以下是演示OCR识别的一个基本流程演示(不涉及具体细节操作):

1.选择一张用于识别的图片文件

2.选择需要识别区域生成Ttiff图像(就一般的图像保存即可, 内容识别度越高越好 比如黑白;用于生成训练box文件)

注意 以下操作需要java的支持 需要安装java虚拟机 ///jdk-8u101-windows-x64tesseract-ocr-setup-3.05.01 jTessBoxEditor-1.7.3 简体中文chi_sim 然后配置环境变量(具体操作可以自行百度)

3.调用命令行执行生成box训练文件 要java的支持 需要安装java虚拟机) dos命令行生成tiff图像:

$“tesseract {TiffFile} {System.IO.Path.GetFileNameWithoutExtension(TiffFile)} batch.nochop makebox”

当生成出现问题时 提示如下

(这种情况下 可以试着将图像的大小修改一下 比如放大2倍 、3倍。。。)

生成成功时输出如下

4.启动 jTessBoxEditor 这个程序(可以自行百度下载) 打开刚刚生成的Tiff 图像?? 效果如图

将左边的内容一一对应修改为正确的字符值 然后保存。

5.使用命令行执行生成识别模板文件(生成模板的最后一步)

命令行 如下:

D:
cd 文件所在目录\tessdata
echo Run Tesseract for Training..
tesseract.exe TiffFile.tif TiffFile box.train
echo Compute the Character Set..
echo TiffFile 0 0 0 0 0 >font_properties
unicharset_extractor.exe TiffFile.box
mftraining -F font_properties -U unicharset -O TiffFile.unicharset TiffFile.tr
echo Clustering..
cntraining.exe TiffFile.tr
echo Rename Files..
rename normproto TiffFile.normproto
rename inttemp TiffFile.inttemp
rename pffmtable TiffFile.pffmtable
rename shapetable TiffFile.shapetable
echo Create Tessdata..
combine_tessdata.exe TiffFile.
pause

6.选取识别区域取得裁剪位图 然后调用OCR识别方法得到结果

这里演示程序使用的其他项目的 所以不用在意这些选区名称 只是为了获取精确定位识别的区域坐标 用于裁剪,想要识别整张图像也是可以的

得到识别结果

文章地址: C# 使用Tesseract实现OCR图像识别文字信息的例子 | Yuan天空博客

相关内容