pytesseract识别图片
时间: 2023-11-11 19:07:18 浏览: 46
pytesseract是一个Python开源的OCR(光学字符识别)库,可以用于识别图片上的数字、英文和中文等文字。它可以通过一行代码实现提取图片文本的功能。你可以使用pytesseract库中的image_to_string函数来实现这个目标。例如,你可以使用以下代码来识别名为'img.png'的图片中的文字:
from PIL import Image
import pytesseract
def read_image(name):
print(pytesseract.image_to_string(Image.open(name), lang='chi_sim'))
def main():
read_image('img.png')
if __name__ == '__main__':
main()
在这个例子中,read_image函数接受图片的文件名作为参数,并通过image_to_string函数将图片中的文字提取出来并打印出来。你可以通过更改参数'chi_sim'来选择不同的语言进行识别。希望这个例子可以帮助你理解如何使用pytesseract来识别图片。
相关问题
用pytesseract识别图片中文字并保存到excel中代码生成
下面是使用PyTesseract识别图片中文字并将其保存到Excel中的示例代码:
```python
import pytesseract
from PIL import Image
import openpyxl
# 读取图片
image = Image.open('input.png')
# 使用pytesseract进行文字识别
text = pytesseract.image_to_string(image)
# 创建一个新的Excel文件,并获取活动工作表
wb = openpyxl.Workbook()
ws = wb.active
# 将识别后的文字按行分割,并写入Excel中
rows = text.split('\n')
for i, row in enumerate(rows):
# 按列分割文字,并写入单元格
columns = row.split('\t')
for j, col in enumerate(columns):
ws.cell(row=i+1, column=j+1).value = col
# 保存Excel文件
wb.save('output.xlsx')
```
在上述代码中,我们使用`pytesseract`库对输入的图片进行文字识别。然后,我们使用`openpyxl`库创建一个新的Excel文件,并获取活动工作表。接下来,我们将识别后的文字按行分割,再按列分割,并将其写入Excel文件的相应单元格中。最后,我们使用`save`函数保存Excel文件。
请确保已经正确安装了`pytesseract`、`PIL`和`openpyxl`库,并且将输入图片命名为`input.png`并放置在与代码文件相同的目录下。运行代码后,将会生成一个名为`output.xlsx`的Excel文件,其中包含了识别出的文字。
请注意,为了使用`pytesseract`库,您需要先安装Tesseract OCR引擎,并将其配置到系统环境变量中。另外,根据您的实际需求,您可能需要对代码进行适当的调整,以处理不同类型的图片和表格结构。
pytesseract 识别效果差
pytesseract识别效果差的原因可能是图片质量不佳或者图片中的文本与背景颜色对比度不够。为了提高识别准确度,可以进行以下操作:
1. 图片预处理:对图片进行二值化处理,可以使用OpenCV库中的cv2.threshold()函数将图片转换为黑白二值图像,提高文本与背景的对比度。
2. 调整识别参数:可以通过设置tesseract的识别参数来提高识别准确度,例如设置psm参数来指定识别模式,设置oem参数来指定OCR引擎模式等。
下面是一个例子,演示如何使用pytesseract识别图片并提高识别准确度:
```python
import cv2
import pytesseract
# 读取图片
img = cv2.imread('test.png')
# 图片预处理,转换为黑白二值图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
# 识别图片中的文本
text = pytesseract.image_to_string(binary, lang='eng', config='--psm 6')
# 输出识别结果
print(text)
```