Python 图片文字识别和 tesseract 问题解决

简介: Python 图片文字识别和 tesseract 问题解决

1.图片文字识别测试代码

安装需要的工具包

pip install Pillow
pip install pytesseract

测试代码

import pytesseract
from PIL import Image
# 定义图片地址变量
image_path = '/Users/guanfawang/Downloads/Untitled-31.png'
# 打开图片文件
image_open = Image.open(image_path)
# 使用 PyTesseract 进行 OCR 文字识别
image_text = pytesseract.image_to_string(Image.open(image_path), lang='chi_sim')
# 打印结果
print(image_text)

2.存在问题和解决

  • 执行步骤1代码发现报以下错误:

pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it’s not in your PATH. See README file for more information.

原因是tesseract未安装,使用pip install tesseract 会存在问题,可以使用以下命令安装和查看:

# 安装 tesseract
brew install tesseract
# 查看是否安装
tesseract --version

如果没有brew说明没有安装Homebrew,可以查看 Homebrew 安装卸载和配置使用 文章。

找到并复制tesseract的路径位置,将pytesseract.py文件的tesseract_cmd变量更改为对应路径;

也可以不调整pytesseract.py文件内容,在步骤1的代码增加一个全局变量;

pytesseract.pytesseract.tesseract_cmd = r'/opt/homebrew/Cellar/tesseract/5.3.3/bin/tesseract'


再次执行步骤1发现报以下错误:

pytesseract.pytesseract.TesseractError: (1, ‘Error opening data file /opt/homebrew/share/tessdata/chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your “tessdata” directory. Failed loading language ‘chi_sim’ Tesseract couldn’t load any languages! Could not initialize tesseract.’)


该错误提示表明在运行 pytesseract 时遇到了问题,具体是由于无法找到中文语言包 chi_sim.traineddata 或无法初始化 tesseract 导致的。

Tesseract OCR 官方的语言包下载页面:https://github.com/tesseract-ocr/tessdata

搜索并下载chi_sim.traineddata,需要将 chi_sim.traineddata 文件移动到 Tesseract 的 “tessdata” 目录中,重新执行就可以了。

常见的语言参数选择有 chi_sim(简体中文)、eng(英文)、osd、snum。

print(pytesseract.get_languages(config=''))  # 输出 ['chi_sim', 'eng', 'osd', 'snum']

3.完整代码

import pytesseract
from PIL import Image
# 调整tesseract路径
pytesseract.pytesseract.tesseract_cmd = r'/opt/homebrew/Cellar/tesseract/5.3.3/bin/tesseract'
# 定义图片地址变量
image_path = '/Users/guanfawang/Downloads/Untitled-48.png'
# 打开图片文件
image_open = Image.open(image_path)
# 使用 PyTesseract 进行 OCR 文字识别
image_text = pytesseract.image_to_string(Image.open(image_path), lang='chi_sim')
# 打印结果
print(image_text)
# print(text.replace(' ',''))

图片和打印结果如下:

总结:通过多次测试,tesseract对宋体、印刷体等笔画严谨的字体识别准确率很高,其他字体识别不太准确,符号也不太准确,图片倾斜也会影响结果,中文字识别还会显示每个字之间有空格,有时候还需要适当调整lang参数得出更准确的结果……

相关文章
|
6天前
|
文字识别 自然语言处理 API
Python中的文字识别利器:pytesseract库
`pytesseract` 是一个基于 Google Tesseract-OCR 引擎的 Python 库,能够从图像中提取文字,支持多种语言,易于使用且兼容性强。本文介绍了 `pytesseract` 的安装、基本功能、高级特性和实际应用场景,帮助读者快速掌握 OCR 技术。
27 0
|
3月前
|
机器学习/深度学习 人工智能 文字识别
轻松识别文字,这款Python OCR库支持超过80种语言
轻松识别文字,这款Python OCR库支持超过80种语言
|
4月前
|
文字识别 前端开发 Java
印刷文字识别使用问题之如何使用Python SDK来上传图片并获取识别结果
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
4月前
|
文字识别 PyTorch 算法框架/工具
【Python】已解决:Python正确安装文字识别库EasyOCR
【Python】已解决:Python正确安装文字识别库EasyOCR
374 0
|
5月前
|
文字识别 API C++
技术好文共享:编写Tesseract的Python扩展
技术好文共享:编写Tesseract的Python扩展
37 0
|
6月前
|
程序员 Python
tesseract库的安装与使用及在python中使用,Python程序员秋招三面蚂蚁金服
tesseract库的安装与使用及在python中使用,Python程序员秋招三面蚂蚁金服
|
5月前
|
文字识别 Android开发 C++
Tesseract OCR集成Android Studio实现OCR识别
Tesseract OCR集成Android Studio实现OCR识别
286 0
|
6月前
|
机器学习/深度学习 文字识别 自然语言处理
Python图片格式转换与文字识别:技术与实践
Python图片格式转换与文字识别:技术与实践
135 0
|
11月前
|
数据采集 文字识别 PHP
Python(四十二)百度智能云OCR文字识别的坑
这篇的内容其实跟python的关系不是很大,是在使用python做文字识别的时候遇到的一个坑,这里大概记录一下,希望大家在使用百度智能云的OCR文字识别的时候,能够快速的解决这个问题。 业务需求大概是这个样子的,学生在使用仪器做完实验之后,仪器会将实验结果,打印在一张小票上。正常,学生需要将小票上边的数据,逐一输入到系统中,但是,客户觉得这个操作太麻烦了,想用文字识别将小票上边的数据识别出来,自动填入,学生只需要检查一遍识别的是否正确即可。 需求很简单,我这里的后端是使用PHP做的,这也不耽误我使用python做文字识别。最开始的python文字识别的尝试,我这里就不做赘述了,具体,请
123 0
|
机器学习/深度学习 文字识别 算法
文本识别 (OCR)引擎之Tesseract的使用
esseract是一个开源文本识别 (OCR)引擎,用于识别图片中的文字并将其转换为可编辑的文本。
1526 0

热门文章

最新文章

  • 1
    【Python】已解决:Python正确安装文字识别库EasyOCR
    374
  • 2
    提升爬虫OCR识别率:解决嘈杂验证码问题
    110
  • 3
    文本,文字识别14,身份证和车牌识别接口
    26
  • 4
    文本,文字识别13,参数校验,实现参数校验,使用@Valid注解
    26
  • 5
    文本,文字识别12,接口返回值和异常封装,一个好的接口,应该包括,错误码,提示信息,返回的数据,应该知道出错,错在哪里,抛出业务异常应该怎样解决?出现业务异常的时候,抛出业务异常,全局异常处理
    36
  • 6
    文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
    92
  • 7
    文本,文识10,springBoot提供RestTemplate以调用Flask OCR接口,调用flask实现ocr接口,用paddleocr进行图片识别云服务技术,单个paddleocr接口有影响
    86
  • 8
    文本,文识08图片保存()上,最方便在于整体生成代码,serivce及实体类,base64编码保存图片文件,调用flask实现内部ocr接口,通过paddleocr识别,解析结果,base64转图片
    44
  • 9
    文本,文字识别07,SpringBoot服务开发-入参和返回值,编写接口的时候,要注意识别的文字返回的是多行,因此必须是List集合,Bean层,及实体类的搭建
    45
  • 10
    文本,文字识别,Flask实现内部接口开发,OCR外部接口的开发,如何开发一个识别接口,通过post调用,参数是图片的路径,内部调用,直接传图片路径就行
    62