• Win10 环境下安装TesseractOCR与Python集成识别


      前言

      Tesseract是一个开源的ocr引擎,可以开箱即用,项目最初由惠普实验室支持,1996年被移植到Windows上,1998年进行了C++化。在2005年Tesseract由惠普公司宣布开源。2006年到现在,都由Google公司开发。

    官网宣传目前支持100多种语言的识别,根据我的测试,目前感觉其对机器打印的比较规整的英语,或者阿拉伯数字的识别准确率还是挺高的,但是对手写的任何东西,效果都非常一般,不过这已经相当不错了。

      环境介绍

      基础软件介绍:

    windows 10
    anaconda 4.5.4
    python 3.6.5
    opencv 3.4.1 (非必须)
    pycharm 2018 (非必须,可以用自己爱好的ide)
    

      注意这里我直接装的anaconda4.x(一个python的科学管理软件与java的maven比较类似)的版本,它已经内置支持python的各种版本,省去了一些兼容问题,同时在anaconda的cmd窗口中,如果不想使用自身的conda命令安装软件,我们还可以用pip命令安装,这一点是不冲突的,关于anaconda的安装请参考我前面的文章。

      Tesseract的安装

      Tesseract的github地址:https://github.com/tesseract-ocr/tesseract

      Tesseract的安装:

    (1)Tesseract本身没有windows的安装包,不过它指定了一个第三方的封装的windows安装包,在其wiki上有说明,大家可直接到这个地址进行下载:

    https://digi.bib.uni-mannheim.de/tesseract/

       这里下载的是:tesseract-ocr-w64-setup-v5.0.0-alpha.20210811.exe

      下载后就是一个exe安装包,直接右击安装即可,安装完成之后,配置一下环境变量,编辑 系统变量里面 path,添加下面的安装路径:

    C:\Program Files (x86)\Tesseract-OCR
    

      安装完成之后,直接cmd输入:

    tesseract -v
    tesseract v5.0.0-alpha.20210811
     leptonica-1.78.0
      libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.3) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0
     Found AVX2
     Found AVX
     Found FMA
     Found SSE4.1
     Found libarchive 3.5.0 zlib/1.2.11 liblzma/5.2.3 bz2lib/1.0.6 liblz4/1.7.5 libzstd/1.4.5
     Found libcurl/7.77.0-DEV Schannel zlib/1.2.11 zstd/1.4.5 libidn2/2.0.4 nghttp2/1.31.0
    

      注意,这一步在windows上是必须安装的,否则运行程序时,会抛出异常:

    [WinError 2] 系统找不到指定的文件

    (2)安装python的封装接口:

    pip install pillow  #一个python的图像处理库,pytesseract依赖
    pip install pytesseract

      注意第一步必须安装成功,同时配置好环境变量,否则第二步必会报错,因为第二步是接口,运行时候会调用第一步的原C++写的类库。

      Tesseract的使用

      测试图1,纯数字:

      

      结果:

    140378

      测试图2,英文:

     

      结果:

    As you can see in this screenshot, the thresholded image is very clear and the background
    has been removed. Our script correctly prints the contents of the image to the console.
    

      

      测试图3,手写数字:

     

      结果:

    ar oe
    

      

      python代码如下:

    from  PIL import  Image
    import pytesseract
    import  cv2 as cv
    
    
    img_path='F:/fb/xxx.jpg'
    
    # img_path='orgin.jpg'
    
    # img_path='F:/fb/hpop.jpg'
    
    # 依赖opencv
    img=cv.imread(img_path)
    text=pytesseract.image_to_string(Image.fromarray(img))
    
    
    # 不依赖opencv写法
    # text=pytesseract.image_to_string(Image.open(img_path))
    
    
    print(text)

      前面说过,对于机器打印的比较规则的字符,Tesseract识别起来还是比较给力的,至于手写的字符,识别效果比较差,可以看到上面的手写数字识别出来的都是错误的,当然这里也有调优的余地,比如给图片做灰度,模糊,去燥,二值化等等,可能结果会稍微好一点。

      总结

      本篇文章介绍了Tesseract在windows环境下的安装配置,同时介绍了如何在python中集成使用,感兴趣的朋友可以尝试一下。

       


    作者:全栈测试开发日记
    出处:https://www.cnblogs.com/liudinglong/
    csdn:https://blog.csdn.net/liudinglong1989/
    微信公众号:全栈测试开发日记
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    三层框架(原始版)
    Java虚拟机之内存区域
    JDK和JRE的区别
    cookie和session区别与联系
    DAO、Service、Controller及View层级结构梳理
    JavaWeb-四大域对象复习
    Mybatis-实现逆向代理
    Springboot-实现热部署
    排序算法-冒泡排序
    【ERROR 1064 (42000)】MySQL中使用mysqladmin或set修改root密码时提示语法错误
  • 原文地址:https://www.cnblogs.com/liudinglong/p/15613249.html
Copyright © 2020-2023  润新知