zoukankan      html  css  js  c++  java
  • ocr识别开源软件tesseract试用记录

    针对公司系统现场查验场景中,需要用到拍照识别并查验证件信息的需求。对其中关键的ocr开源软件tesseract技术进行了简单试用记录。

    1、新建一个winform测试项目,通过nuget搜索安装tesseract的sdk。

    2、去github下载语言包:https://github.com/tesseract-ocr/tessdata,分各种语言,下载英文(eng.traineddata)以及中文(chi_sim.traineddata)的,下载完成后放到测试项目的debug essdata目录下,注意只能是tessdata目录,名字不能错。

    3、代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Tesseract;

    namespace TestOCR
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    /// <summary>
    /// 加载图片显示到picturebox
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button1_Click(object sender, EventArgs e)
    {
    if (openFileDialog1.ShowDialog() == DialogResult.OK && (openFileDialog1.FileName != ""))
    {
    pictureBox1.ImageLocation = openFileDialog1.FileName;
    }
    }

    /// <summary>
    /// 调用tesseract对所选图片文字进行识别
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button2_Click(object sender, EventArgs e)
    {
    using (TesseractEngine te = new TesseractEngine(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "tessdata"), "chi_sim+eng", EngineMode.Default))
    {
    using (var pix = PixConverter.ToPix(new Bitmap(pictureBox1.ImageLocation)))
    {
    var page = te.Process(pix);
    string text = page.GetText();
    this.textBox1.Text = text;
    }
    }
    }
    }
    }

      a、运行,选择一个字少的,识别结果如下,可以发现清晰的字大的地方,识别率还可以,但是最下面一行就完全变乱码了:

      b、换一张图,从业资格证,格式比较复杂的,图片清晰度已经很可以了,但是识别结果基本不可用。

      

    4、因为手上其他要跟的事情太多,没有再进一步研究,基本结论如下:

      a、这个东西要想达到实用的效果,还有很多事情要做,远不是写个demo那么简单。

      b、我们的场景过程:现场手机拍证件或者拍车牌—>上传拍摄图片,调用ocr服务识别—>针对识别出的特征信息(证件号或者车牌号),调用对应的查验接口—>返回相关信息。

      c、分析:现场拍摄的图片质量,会比测试使用图片质量差很多(主要是清晰度、角度)。因此,实际我们在识别之前,还需要对图片进行很多的预处理来提高识别率,例如对图片进行形状校正、对图片进行去噪点、包括针对特定证件的特定位置进行识别排除干扰项、对识别语言包进行针对性的训练等工作,有大量的工作要做。目前决定暂时不再推进研究工作。建议直接使用市场中成熟大厂的产品。

      

  • 相关阅读:
    1、C# 数组是值类型还是引用类型,对数组有什么更深层次的理解?
    面试:TCP协议经典十五连问!
    看八股408数据结构中平衡树有感而发,直接手撸了10h Splay终于撸出来了
    关于个人感觉冷门的介值定理的记录
    对泰勒公式又有了新的认识
    mac配置java环境
    Kubernetes kubectl常用命令
    .ssh/config line 4: garbage at end of line; "Enterprise"
    maven修改项目版本号命令
    JenKins持续集成
  • 原文地址:https://www.cnblogs.com/coldlight/p/11868257.html
Copyright © 2011-2022 走看看