python爬虫代码提取图片中的文字_python识别图像并提取文字的实现方法
前言
python图像识别一般基础到的就是tesseract了,在爬虫中处理验证码广泛使用。
安装
安装教程网上大都差不多,Windows下确实比较麻烦,涉及到各种路径、环境变量甚至与linux不同的路径分隔符,所以这里的安装是基于Centos7。
1. 依赖安装
yum install -y automake autoconf libtool gcc gcc-c++
2. 安装leptonica
Leptonica主要用于图像处理和图像分析
原则上所有的库文件都是可以直接用yum安装的,如果想要具体的某个版本,可以前往官方源下载对应版本然后按照对应方式编译
wget http://www.leptonica.org/source/leptonica-1.74.4.tar.gz
tar -zxvf leptonica-1.74.4.tar.gz
cd leptonica-1.74.4/
./configure
make && make install
3. 安装tesseract
其他各版本可以在这里下载并自行编译,也提供直接使用的文件。
yum install tesseract
4. 验证安装
tesseract --version
5. 语言包下载
前往tesseract-ocr/tessdata下载相应的语言包,然后将之移动到tessdata目录下,可以用whereis tesseract查看一下具体的目录,我的是/usr/share/tesseract/tessdata/mv *.traineddata /usr/local/share/tessdata/
6. 查看目前已下载的语言
tesseract --list-langs
使用
# tesseract
Usage:
tesseract --help | --help-psm | --help-oem | --version
tesseract --list-langs [--tessdata-dir PATH]
tesseract --print-parameters [options...] [configfile...]
tesseract imagename|stdin outputbase|stdout [options...] [configfile...]
OCR options:
--tessdata-dir PATH Specify the location of tessdata path.
--user-words PATH Specify the location of user words file.
--user-patterns PATH Specify the location of user patterns file.
-l LANG[+LANG] Specify language(s) used for OCR.
-c VAR=VALUE Set value for config variables.
Multiple -c arguments are allowed.
--psm NUM Specify page segmentation mode.
--oem NUM Specify OCR Engine mode.
NOTE: These options must occur before any configfile.
语法
tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]
imagename:图片名字
outputbase:指定输出,如果希望直接输出而不是保存到文件,那么就使用 stdout,否则这个参数将会作为保存结果的文件的前缀
-l指定语言文件,默认使用英文
tesseract --print-parameters:查看更多参数信息
使用-c指定单项参数的值或者将配置写入配置文件放在命令最后(支持多个配置文件)
psm 识别图像的方式
0:定向脚本监测(OSD)
1: 使用OSD自动分页
2 :自动分页,但是不使用OSD或OCR(Optical Character Recognition,光学字符识别)
3 :全自动分页,但是没有使用OSD(默认)
4 :假设可变大小的一个文本列。
5 :假设垂直对齐文本的单个统一块。
6 :假设一个统一的文本块。
7 :将图像视为单个文本行。
8 :将图像视为单个词。
9 :将图像视为圆中的单个词。
10 :将图像视为单个字符。
python中使用
Tesseract安装完成后可以很方便的被Python调用,但是需要pillow和pytesseract的支持。
python中转换
image_to_data(image, lang=None, config='', nice=0, output_type=Output.STRING)
image Object,由Tesseract处理的图像的PIL Image/NumPy数组
lang String,Tesseract语言代码字符串
config String,任何其他配置字符串,例如:config='--psm 6'
语言文件可以叠加,用“+”隔开
我们也可以在这里进行tessdata路径的设置,跟在config里面即可
更多配置包括config和psm都和tesseract类似
实例:
流程: 打开图片,配置,转换,可以通过Image的open或者cv2的imread打开图片,之后对图片进行对比度增强,降噪等处理,效果会好一些。
from PIL import Image
import pytesseract
class Languages:
CHS = 'chi_sim'
ENG = 'eng'
def img_to_str(image_path, lang=Languages.ENG):
return pytesseract.image_to_string(Image.open(image_path), lang)
print(img_to_str('pic/numu.png', lang=Languages.ENG))
print(img_to_str('pic/pro.png', lang=Languages.ENG))
总结
简单的文本识别效果还是不错的,但是设计到多空行、符号等,识别效果就不是太好了,准确度方面可以通过对字库的训练达到想要的效果,之后对获取到的文本利用诸如re等各种库进行操作,其实应用还蛮广泛的。2. 但是它在验证码方面的话效果还是不错的,验证码的话tesserocr也是比较方面的.
识别中文可能会出现编码错误,这也是识别上的漏洞之一了,网上大佬们所说的改变文本的编码似乎并不能解决问题,所以对长文本图片处理还是不太建议直接转换。
图文处理也可以借鉴一些各平台的API,百度、腾讯、美团都有支持.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
python爬虫代码提取图片中的文字_python识别图像并提取文字的实现方法相关推荐
- python爬虫代码实例源码_python爬虫代码示例分享
这篇文章主要介绍了三个python爬虫项目实例代码,使用了urllib2库,文中示例代码非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下. python爬虫代码示例分享 一. ...
- python 图像处理与识别书籍_Python图像处理之识别图像中的文字(实例讲解)
①安装PIL:pip install Pillow(之前的博客中有写过) ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install p ...
- python去除图片上的文字_Python图像处理之识别图像中的文字(实例讲解)
①安装PIL:pip install Pillow(之前的博客中有写过) ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install p ...
- python爬虫代码-python网络爬虫源代码(可直接抓取图片)
在开始制作爬虫前,我们应该做好前期准备工作,找到要爬的网站,然后查看它的源代码我们这次爬豆瓣美女网站,网址为:用到的工具:pycharm,这是它的图标 ...博文来自:zhang740000的博客 P ...
- python爬虫代码示例分享
这篇文章主要介绍了三个python爬虫项目实例代码,使用了urllib2库,文中示例代码非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下. python爬虫代码示例分享 一. ...
- 提供三块Python爬虫代码学习
提供三块Python爬虫代码学习 爬取内涵段子 #encoding=utf-8 import urllib2import reclass neihanba():def spider(self):''' ...
- 2018年统计用区划代码和城乡划分代码(截止2018年10月31日)(数据及python爬虫代码)
统计局网站的数据汇总. 细粒度,到最后一级(一般为5级,网站上少部分地区为4级). 数据编码格式为utf8,以便显示名称中的生僻字,请使用合适的文本工具打开. 这里有python爬虫代码和所需库.爬取 ...
- python爬虫 点击下一页_python爬虫实现获取下一页代码
我们首先来看下实例代码: from time import sleep import faker import requests from lxml import etree fake = faker ...
- python爬虫requests源码链家_python的爬虫项目(链家买二手房)
不知不觉,已经工作6年有余,恍恍惚惚,有机会满足房子需求. 在收集房子信息过程中,做些记录. 贝壳的功能很强大,但很难满足小区.距离.教育.面积等多个方面的匹配,使用起来成本仍然较高. 针对以上情况, ...
最新文章
- 21 window对象常见事件
- 计算机组成原理的中央控制器,计算机组成原理第六章中央控制器(6-7,8,9).pdf
- 2020-11-14(移位运算)
- int length c语言,第07天C语言(06):数组练习2
- 有用的mysql语句
- sqlserver 的一些好用的插件
- 前端学习资料(书籍和视频)
- ddd 访问权限_基于DDD的微服务设计和开发实战
- 安卓登录以及会话保持的解决方案
- 曲线相似度衡量——曲线距离计算Fréchet distance详解与python计算
- [转] 年终回顾,为你汇总一份「前端技术清单」
- jquery 查找祖先元素_如何获得jQuery中元素的第一个祖先
- 程序员面试金典——1.1确定字符互异
- Qt读写Excel--QXlsx设置字体格式、样式8
- 未来十年最容易消失和最不易被取代的22个职业,越看越心惊!附相关专业
- 一文读懂Elephant Swap的LaaS方案的优势之处
- lombok导入报错,版本1.18.12已在maven本地仓库中
- 苹果手机可以投影到墙上吗_怎么将手机上的投影到电视上或墙上?
- jquery 调用 click 事件 的 三种 方式
- java计算机毕业设计银创科技有限公司人事信息系统源码+数据库+系统+lw文档+部署