告别腾讯百度图片文字识别API调用,OCR图片文字识别就用这条代码–pytesseract 与python的完美结合

上期文章我们分享了tesseract的基本安装,本期我们来分享一下如何使用python与tesseract进行代码的编程来实现tesseract的文字识别

在开始本期文章之前,请认真阅读一下小编前期分享的了tesseract的安装教程,确保你电脑里面安装了pytesseract 与tesseract,最好是4.0以上的版本

pytesseract 与python的完美结合

import pytesseract

import cv2

from pytesseract import Outpu

image = cv2.imread(’11.png’)

rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

results = pytesseract.image_to_data(rgb, output_type=Output.DICT)

首先我们导入pytesseract第三方库

使用cv2.imread读取需要检测的图片

由于CV2读取的图片是在BGR空间,这里需要cv2.cvtColor(image, cv2.COLOR_BGR2RGB)来转换为RGB空间

然后使用pytesseract.image_to_data来识别,结果保存在results里面

ok ,本期文章到此结束,就这几条代码

哈哈,开个玩笑,再怎么也得介绍一下代码的具体含义

pytesseract一般具有如下功能:

  1. image_to_string将图像上的Tesseract OCR运行结果返回到字符串
  2. image_to_boxes返回包含已识别字符及其框边界的结果
  3. image_to_data返回包含框边界,置信度和其他信息的结果
  4. image_to_osd返回包含有关方向和脚本检测的信息的结果

这里我们使用image_to_data来获取检测到的字符以及置信度与具体的边界位置,其他功能小伙伴们可以自行测试

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

image Object,PIL Image /由Tesseract处理的图像的NumPy数组

lang String,Tesseract语言代码字符串

config String,任何其他配置为字符串

nice Integer,修改Tesseract运行的处理器优先级。Windows不支持。

output_type Class属性,指定输出的类型,默认为string

我们这里选择输入一个字典,字典里面存放着测到的字符以及置信度与具体的边界位置

for i in range(0, len(results[“text”])):

x = results[“left”][i]

y = results[“top”][i]

w = results[“width”][i]

h = results[“height”][i]

text = results[“text”][i]

conf = int(results[“conf”][i])

我们遍历整个字典,获取了检测字符串的初始位置(x,y),以及字符串的长度与高度(w,h),这样我们就可以画一个box来提示以及检测到的字符串。

text = results[“text”][i]获取识别到的字符串

conf = int(results[“conf”][i])获取识别到字符串的置信度

if conf > 50:

text = “”.join([c if ord(c) < 128 else “” for c in text]).strip()

print(text)

cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.imshow(“Image”, image)

cv2.waitKey(0)

我们选择置信度大于50%的,把检测到的字符串全部打印,并显示到图片上

检测到的字符

tesseract 默认只识别英文,你若想识别其它语言,请下载对应的tessdata

https://github.com/tesseract-ocr/tessdata

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

然后修改此处的lang=“chi_sim”或者其他语言

只检测英文