C# 使用Tesseract实现OCR图像识别文字信息的例子
OCRC#教程Tesseract图像文字识别文字提取
编程开发
1858
0 积分
c#使用Tesseract实现OCR图像文字识别
首先使用 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识别方法得到结果
这里演示程序使用的其他项目的 所以不用在意这些选区名称 只是为了获取精确定位识别的区域坐标 用于裁剪,想要识别整张图像也是可以的
--