• 技术文章 >后端开发 >Python教程

    python识别图片中文字的方法

    尚2020-06-15 16:42:35转载1343

    Tesseract

    文字识别是ORC的一部分内容,ORC的意思是光学字符识别,通俗讲就是文字识别。Tesseract是一个用于文字识别的工具,我们结合Python使用可以很快的实现文字识别。但是在此之前我们需要完成一个繁琐的工作。

    (1)Tesseract的安装及配置

    在 https://digi.bib.uni-mannheim.de/tesseract/下载Tesseract

    1.jpg

    有很多版本供大家选择,大家可以根据自己的需求选择。其中w32表示32位系统,w64表示64位系统,大家选择合适的版本即可,可能下载速度比较慢。

    安装时我们需要知道我们安装的位置,将安装目录配置到系统path变量当中,我们路径是D:\CodeField\Tesseract-OCR。

    2.jpg

    我们右击我的电脑/此电脑->属性->高级系统设置->环境变量->Path->编辑->新建然后将我们的路径复制进去即可。添加好系统变量后后我们还需要依次点确定,这样才算配置好了。

    (2)下载语言包

    Tesseract默认是不支持中文的,如果想要识别中文或者其它语言需要下载相应的语言包,下载地址如下: https://tesseract-ocr.github.io/tessdoc/Data-Files ,进入网站后我们往下翻:

    3.jpg

    其中有两个中文语言包,一个Chinese-Simplified和Chinese-Traditional,它们分别是简体中文和繁体中文,我们选择需要的下载即可。下载完成后我们需要放到Tesseract的路径下的tessdata目录下,我们路径是D:\CodeField\Tesseract-OCR\tessdata。

    (3)其它模块下载

    除了上面的步骤,我们还需要下载两个模块:

    pip install pytesseract
    pip install pillow

    第一个是用于文字识别的,第二个是用于图片读取的。接下来我们就可以进行文字识别了。

    文字识别

    (1)单张图片识别

    接下来的操作就要简单的多,下面是我们要识别的图片:

    5.jpg

    接下来就是我们文字识别的代码:

    import pytesseract
    from PIL import Image
    # 读取图片
    im = Image.open('sentence.jpg')
    # 识别文字
    string = pytesseract.image_to_string(im)
    print(string)

    识别结果如下:

    Do not go gentle into that good night!

    因为默认是支持英文的,所以我们可以直接识别,但是当我们要识别中文或其它语言时就需要做些修改:

    import pytesseract
    from PIL import Image
    # 读取图片
    im = Image.open('sentence.png')
    # 识别文字,并指定语言
    string = pytesseract.image_to_string(im,)
    print(string)

    在识别时,我们设置lang='chi_sim',也就是把语言设置为简体中文,只有当你的tessdata目录下有简体中文包该设置才会生效。下面是我们用来识别的图片:

    6.JPG

    识别结果如下:

    不 要 温 顺 的 走 进 那 个 良 夜

    图片内容被准确识别出来了。有一点我们需要知道,在我们将语言设置为简体中文或其它语言后,Tesseract还是可以识别出英文字符。

    (2)批量图片识别

    既然我们把单张图片识别列出来了,就肯定还有批量图片识别这个功能,这就需要我们准备一个txt文件了,比如我有text.txt文件,内容如下:

    sentence1.jpg
    sentence2.jpg

    我们将代码修改为如下:

    import pytesseract
    # 识别文字
    string = pytesseract.image_to_string('text.txt',)
    print(string)

    但是这样自己写一个txt文件难免有些麻烦,因此我们又可以进行如下修改:

    import os
    import pytesseract
    # 文字图片的路径
    path = 'text_img/'
    # 获取图片路径列表
    imgs = [path + i for i in os.listdir(path)]
    # 打开文件
    f = open('text.txt', 'w+', encoding='utf-8')
    # 将各个图片的路径写入text.txt文件当中
    for img in imgs:
        f.write(img + '\n')
    # 关闭文件
    f.close()
    # 文字识别
    string = pytesseract.image_to_string('text.txt',)
    print(string)

    这样我们只需要传入一个文字图片的根目录就可以批量进行识别了。在测试过程中发现,Tesseract对手写体、行楷等飘逸的字体识别不准确,对一些复杂的字识别也有待提升。

    但是宋体、印刷体等笔画严谨的字体识别准确率很高。另外如果图片的倾斜大于一定的角度,识别结果也会有很大差别。

    更多相关知识请关注python视频教程栏目

    以上就是python识别图片中文字的方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:python
    上一篇:解决pycharm找不到解释器的问题 下一篇:python中几种常用字符串函数
    大前端线上培训班

    相关文章推荐

    • python中split的用法详解• 如何python判断字符串是否为回文?• 导入python标准数学函数模块的语句是什么• python安装matplotlib失败怎么解决

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网