属性同好会 本子教你快速学习python图像识别⼊门
附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单⼤全:
书单导航页(点击右侧极客侠栈即可打开个⼈博客):
-------------------------------------------------------------------------------------------------------------------------------------------python图像识别⼀般基础到的就是tesseract了,在爬⾍中处理验证码⼴泛使⽤。
安装
安装教程⽹上⼤都差不多,Windows下确实⽐较⿇烦,涉及到各种路径、环境变量甚⾄与linux不同的路径分隔符,所以这⾥的安装是基于__Centos7__。
1. 依赖安装c语言变量命名规则
python基础代码大全下载yum install -y automake autoconf libtool gcc gcc-c++
2. 安装leptonica
Leptonica主要⽤于图像处理和图像分析
原则上所有的库⽂件都是可以直接⽤yum安装的,如果想要具体的某个版本,可以前往官⽅源下载对
应版本然后按照对应⽅式编译
wget /source/leptonica-1.74.
tar -zxvf leptonica-1.74.
cd leptonica-1.74.4/
./configure
make && make install
3. 安装tesseract
其他可以在这⾥下载并⾃⾏编译,也提供直接使⽤的⽂件。
yum install tesseract
4. 验证安装
tesseract --version
5. 语⾔包下载
前往下载相应的语⾔包,然后将之移动到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
java append函数的用法tesseract --list-langs [--tessdata-dir PATH]
tesseract --print-parameters [] []
tesseract imagename|stdin outputbase|stdout [] []
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.sql添加一条记录
-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] []
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
assertequal用法
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))
总结
1. 简单的⽂本识别效果还是不错的,但是设计到多空⾏、符号等,识别效果就不是太好了,准确度⽅⾯可以通过对字库的训练达到想要
的效果,之后对获取到的⽂本利⽤诸如re等各种库进⾏操作,其实应⽤还蛮⼴泛的。2. 但是它在验证码⽅⾯的话效果还是不错的,验证码的话tesserocr也是⽐较⽅⾯的.
2. 识别中⽂可能会出现编码错误,这也是识别上的漏洞之⼀了,⽹上⼤佬们所说的改变⽂本的编码似乎并不能解决问题,所以对长⽂本
图⽚处理还是不太建议直接转换。
3. 图⽂处理也可以借鉴⼀些各平台的API,百度、腾讯、美团都有⽀持.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。