Python识别图片指定区域文字内容

Python批量识别图片指定区域文字内容

简介

对于一张图片,需求识别指定区域的内容

  1. 截取原始图上的指定图片当做模板
  2. 根据模板相似度去再原始图片上识别准确坐标
  3. 根据坐标剪切出指定位置图片,也就是所需的内容区域
  4. 对指定位置图片进行ocr识别

环境
Ubuntu18.04
Python2.7

所需Python模块

  1. aircv

    用于识别模板再原始图的位置坐标

pip install aircv
  1. Pillow
    用于剪裁图片
pip install Pillow
  1. Tesseract
    文字识别
    在此也可以用平台端的API进行更精准的识别
    ubuntu下Tesseract环境安装
    
    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安装

sudo apt-get install tesseract-ocr

2.pytesseract安装

pip install pytesseract

Python代码

识别对应位置

#!/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

图片剪裁

#!/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)

图片识别

#!/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识别自行研究

————————————————
版权声明:本文为CSDN博主「Likeob」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41616397/article/details/87980510