社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用Python&Tesseract识别图片文字

Python之禅 • 7 年前 • 1163 次点击  

题图:https://unsplash.com/@alvaroserrano

在一个项目中遇到这样的需求,要把一堆图片中的文字识别出来并分门别类地保存数据库,上万字纯手工敲是下下策,网上有很多图片转文字的在线服务,单张图转没什么问题,可惜大批量的图缺乏定制化,爱捣鼓的程序员还是自己动手靠谱,开源项目 Tesseract 专用于 OCR 识别,它的应用场景非常多,比如验证码识别、车牌识别、普通的文字图片识别都不是问题。

安装

Linux 和 Mac 平台的安装非常简单,直接命令行安装即可,默认只有英文语言包,汉语包需要额外指定

sudo apt-get install tesseract-ocr  # ubuntu

brew install tesseract  # macOS

Windows 平台需要二进制安装包,官方下载地址 https://github.com/tesseract-ocr/tesseract/wiki/4.0-with-LSTM#400-alpha-for-windows,安装时需要选择中文语言包才是识别汉字

配置

安装完成后,需要设置两个环境变量 $PATH$TESSDATA_PREFIX,如果不指定后面会报错,把 tessertact 的安装路径加入 PATH 变量中,TESSDATA_PREFIX 变量的值指定为语言包的路径

实战

Python-tesseract 是 tessertact 的 Python 封装包,它需要依赖图片处理库 PIL(Pillow),环境搭建完成后就可以开始做定制化开发了。

以下我以杜甫的《登高》作为 demo 从中提取出其中的文字

# pip install pytesseract 先安装依赖包
try:
   import Image
except ImportError:
   from PIL import Image
import pytesseract
# lang 指定中文简体
text = pytesseract.image_to_string(Image.open('dufu-denggao1.jpeg'), lang='chi_sim')
print(text)

输出结果:

风 急 天 高 猿 哨 哀 , 渚 清 沙 白 鸟 飞 回 。 无 边 落 木 萧 萧 下 , 不 尽 长 江 滚 滚 来 。 万 里 悲 秋 常 作 客 , 百 年 多 病 独 登 台 。 艰 难 苦 恨 繁 霜 鬓 , 漫 倒 新 停 浊 酒 杯 。

你可以根据自己的业务需求进行自定义开发,为了适应不同的环境下的图片,你可能需要了解更多 Tesseract 的API,以此来提高文字识别的准确率。 如果你有兴趣,甚至基于公众号开发,用户上传图片,自动识别出文字,提供收费服务也不是没有可能。

关于Tesseract

Tesseract 有超过 30 年的历史,它最早诞生于HP实验室,在 2005 年,Tesseract由美国内华达州信息技术研究所获得,其后由 Google 赞助进行后续的开发和维护。

下面的几篇 Tesseract 相关的论文非常适合研究生做课题设计

  • WIKI:https://github.com/tesseract-ocr/tesseract/wiki

  • 论文:https://github.com/lzjun567/the-Papers-and-Data-of-Tesseract-OCR-


iOS & Android 两用赞赏通道,赞赏记得留个言

关注Python之禅,提高Python技术


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/eo0AXFKms0
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/2266
 
1163 次点击