光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,而后对图像文件进行分析处理,获取文字及版面信息的过程。OCR技术很是专业,通常可能是印刷、打印行业的从业人员使用,能够快速的将纸质资料转换为电子资料。关于中文OCR,目前国内水平较高的有清华文通、汉王、尚书,其产品各有千秋,价格不菲。国外OCR发展较早,像一些大公司,如IBM、微软、HP等,即便没有推出单独的OCR产品,可是他们的研发团队早已掌握核心技术,将OCR功能植入了自身的软件系统。对于咱们程序员来讲,通常用不到那么高级的,主要在开发中可以集成基本的OCR功能就能够了。html
Tesseract的OCR引擎最早由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也今后尘封。数年之后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生--2005年,Tesseract由美国内华达州信息技术研究所得到,并求诸于Google对Tesseract进行改进、消除Bug、优化工做。Tesseract目前已做为开源项目发布在Google Project(现已托管 github),其项目主页在这里查看,3.0版本已经支持中文OCR,并提供了一个命令行工具。主库地址。git
建立成功后分别建立两个空的项目解决方案文件夹 WinformDemo 跟 TesseractWeb程序员
建立window窗体应用程序,使用 Nuget 添加 Tesseract ,搜索 tesseract-ocr ,如今最新版本是 3.2.0-alpha4,这里演示使用的是 3.0.2 稳定版 。以下图所示,选择所须要的版本安装便可。github
安装完成后再项目中会添加以下两个文件夹工具
图片上传参考:http://www.cnblogs.com/miskis/p/7607024.html优化
语言文件下载地址:https://github.com/tesseract-ocr/tesseract/wiki/Data-Files#data-files-for-version-302spa
我使用的是英语语言包命令行
下载后解压文件找到 tessdata 把它拷贝到你的项目中3d
后台代码:code
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(); } } }
效果以下:
能够看出没有干扰线的识别仍是很准确。