python批量识别图片指定区域文字内容,供大家参考,具体内容如下
简介
对于一张图片,需求识别指定区域的内容
1.截取原始图上的指定图片当做模板
2.根据模板相似度去再原始图片上识别准确坐标
3.根据坐标剪切出指定位置图片,也就是所需的内容区域
4.对指定位置图片进行ocr识别
环境
ubuntu18.04
python2.7
所需python模块
1.aircv
用于识别模板再原始图的位置坐标
1
|
pip install aircv
|
2.pillow
用于剪裁图片
1
|
pip install pillow
|
文字识别
在此也可以用平台端的api进行更精准的识别
ubuntu下tesseract环境安装
1
2
3
4
5
6
|
sudo apt - get install libpng12 - dev
sudo apt - get install libjpeg62 - dev
sudo apt - get install libtiff4 - dev
sudo apt - get install gcc
sudo apt - get install g + +
sudo apt - get install automake
|
1.tesseract-ocr安装
1
|
sudo apt - get install tesseract - ocr
|
2.pytesseract安装
1
|
pip install pytesseract
|
python代码
识别对应位置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
import aircv
def matchimg(imgsrc, imgobj, confidence = 0.2 ):
"""
图片对比识别imgobj在imgsrc上的相对位置(批量识别统一图片中需要的部分)
:param imgsrc: 原始图片路径(str)
:param imgobj: 待查找图片路径(模板)(str)
:param confidence: 识别度(0<confidence<1.0)
:return: none or dict({'confidence': 相似度(float), 'rectangle': 原始图片上的矩形坐标(tuple), 'result': 中心坐标(tuple)})
"""
imsrc = aircv.imread(imgsrc)
imobj = aircv.imread(imgobj)
match_result = aircv.find_template(imsrc, imobj,
confidence) # {'confidence': 0.5435812473297119, 'rectangle': ((394, 384), (394, 416), (450, 384), (450, 416)), 'result': (422.0, 400.0)}
if match_result is not none:
match_result[ 'shape' ] = (imsrc.shape[ 1 ], imsrc.shape[ 0 ]) # 0为高,1为宽
return match_result
|
图片剪裁
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
from pil import image, imageenhance
def cutimg(imgsrc, out_img_name, coordinate):
"""
根据坐标位置剪切图片
:param imgsrc: 原始图片路径(str)
:param out_img_name: 剪切输出图片路径(str)
:param coordinate: 原始图片上的坐标(tuple) egg:(x, y, w, h) ---> x,y为矩形左上角坐标, w,h为右下角坐标
:return:
"""
image = image. open (imgsrc)
region = image.crop(coordinate)
region = imageenhance.contrast(region).enhance( 1.5 )
region.save(out_img_name)
|
图片识别
1
2
3
4
5
6
7
8
|
#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
import pytesseract
from pil import image
image = image. open ( 'bb.png' )
code = pytesseract.image_to_string(image)
print (code)
|
对于三方api识别自行研究
以上就是本文的全部内容,希望对大家的学习有所帮助。
原文地址:https://blog.csdn.net/qq_41616397/article/details/87980510