pytesseract识别中文并获得中文的位置信息(Bounding Box)

        pytesseract识别中文并且获得识别的字符的位置信息,识别中文随便找找就能找到相关资料,但是获得位置信息的中文资料有点少呀,下面通过学习这个获得了怎么得到位置信息的方法了。总体来说有两个方法。一个是image_to_boxes,该方法只会返回识别后的位置信息,没有字符;另一个是image_to_data,它返回的信息就多了,位置信息,识别的字符等等(详情可以看上面的链接)。还需要注意的是,image_to_data可以通过output_put参数选择返回数据格式。

image_to_data(image, lang=None, config='', nice=0, output_type=Output.STRING, timeout=0)

实验性质的代码如下:

import cv2
import pytesseract
from pytesseract import Output
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import numpy as np

def recoText(im):
    """
    识别字符并返回所识别的字符及它们的坐标
    :param im: 需要识别的图片
    :return data: 字符及它们在图片的位置
    """
    data = {}
    d = pytesseract.image_to_data(im, output_type=Output.DICT, lang='chi_sim')
    for i in range(len(d['text'])):
        if 0 < len(d['text'][i]):
            (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i])
            data[d['text'][i]] = ([d['left'][i], d['top'][i], d['width'][i], d['height'][i]])

            cv2.rectangle(im, (x, y), (x + w, y + h), (255, 0, 0), 1)
            # 使用cv2.putText不能显示中文,需要使用下面的代码代替
            #cv2.putText(im, d['text'][i], (x, y-8), cv2.FONT_HERSHEY_SIMPLEX, 0.3, (255, 0, 0), 1)

            pilimg = Image.fromarray(im)
            draw = ImageDraw.Draw(pilimg)
            # 参数1:字体文件路径,参数2:字体大小
            font = ImageFont.truetype("simhei.ttf", 15, encoding="utf-8")
            # 参数1:打印坐标,参数2:文本,参数3:字体颜色,参数4:字体
            draw.text((x, y-10), d['text'][i], (255, 0, 0), font=font)
            im = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)

    cv2.imshow("recoText", im)
    return data

if __name__ == '__main__':
    img = cv2.imread('2.png')
    #cv2.imshow("src", img)
    data = recoText(img)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

效果如下(从图中可以看出自带的chi_sim识别字库识别效果不是很好呀):

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值