📜  从图像python中获取文本(1)

📅  最后修改于: 2023-12-03 15:06:34.624000             🧑  作者: Mango

从图像中获取文本

在现实生活中,我们经常会遇到需要从图像中获取文本的场景,例如车牌识别、身份证号码识别等。Python提供了多个库帮助我们实现图像到文本的转换。在本文中,我们将介绍常用的两个库:pytesseract和opencv-python。

1. pytesseract

pytesseract是一个OCR(光学字符识别)库,基于Google的Tesseract-OCR引擎。它可以将图像转换为文本,并提供简单易用的API。在使用前,需要先安装Tesseract-OCR引擎。

安装

Windows环境下,可以在Tesseract-OCR的官网下载安装程序并安装。

Linux环境下,可以使用以下命令进行安装:

sudo apt install tesseract-ocr

安装完成后,可以使用以下代码测试pytesseract的运行情况:

import pytesseract

print(pytesseract.image_to_string('test.png'))
使用

使用pytesseract很简单,只需将图像路径传入image_to_string()方法即可。如下所示:

import pytesseract
from PIL import Image

image = Image.open('test.png')
text = pytesseract.image_to_string(image, lang='chi_sim')
print(text)

需要注意的是,有时候pytesseract的识别效果并不理想。这时可以通过以下方法提高识别率:

  • 调整图像颜色:例如将图像二值化、灰度化等。
  • 调整识别语言:lang参数可以指定识别语言,例如'eng'表示英文、'chi_sim'表示简体中文等。
  • 调整识别方式:psm参数可以指定识别方式,例如'psm 6'表示识别一个有竖线和横线的文本块。
2. opencv-python

opencv-python是一个开源计算机视觉库,可以用于处理图像和视频。它提供了一系列图像处理算法,可以实现图像到文本的转换。

安装

可以使用以下命令进行安装:

pip install opencv-python
使用

使用opencv-python实现图像到文本的转换,需要进行如下步骤:

  1. 加载图像
  2. 转换为灰度图像
  3. 进行二值化处理
  4. 识别字符
  5. 输出结果

具体代码如下:

import cv2

# 加载图像,设定阈值并进行二值化处理
image = cv2.imread('test.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

# 识别字符
config = '--psm 6'
text = pytesseract.image_to_string(thresh, lang='chi_sim', config=config)

# 输出结果
print(text)

和pytesseract一样,不同场景下需要调整参数以提高识别率。通过调整图像亮度对比度、调整二值化阈值等,可以得到更好的结果。

总结

本文介绍了使用pytesseract和opencv-python两个库实现从图像中获取文本的方法。它们分别基于Tesseract-OCR引擎和opencv计算机视觉库,能够满足大部分场合下的需求。在使用时,需要注意调整参数以获得更好的识别效果。