首页 > 编程问答 >pytesseract 不从图像中提取文本

pytesseract 不从图像中提取文本

时间:2024-07-26 10:30:27浏览次数:12  
标签:python python-tesseract

我有以下图像并尝试使用 pytesseract 提取文本。但是,它总是返回一些未知字符。
图像

 image

这是我正在使用的代码:

import pytesseract as pt
from PIL import Image

#Converting image to text
img = Image.open('frame-1ROI_2.png')
extracted = pt.image_to_string(img)
print(extracted)
print(type(extracted)) 

这是输出

output

如果我使用 这个 在线文本提取工具,它确实提取文本并返回正确的文本。

更新 1

我已更改此代码,结果仍然相同。

img = img.convert("L")
img = img.filter(ImageFilter.SMOOTH_MORE)

图像现在如下所示:

enter image description here

我也尝试过| ||这个 方法但是输出仍然是一样的。 method but the output is still the same.


Tesseract 在处理具有复杂背景的图像时会遇到困难,就像提供的那个。要提高识别精度,需要对图像进行预处理以增强文本并简化背景。

以下是对示例的逐步改进建议,使用 Python 和 OpenCV:

import cv2
import pytesseract

# 1. 加载图像
img = cv2.imread('frame-1ROI_2.png')

# 2. 图像预处理
# a. 转换为灰度
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# b. 使用自适应阈值进行二值化
thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 15, 2)

# c. 降噪(可选,但可以提高结果)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2, 2))
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=1)

# 3. 使用 Tesseract 进行 OCR
extracted = pytesseract.image_to_string(opening)
print(extracted)

# 4. (可选)显示结果
cv2.imshow('Thresholded Image', thresh)
cv2.waitKey(0)

这个代码做了以下事情:

  1. 加载图像: 使用 OpenCV ( cv2.imread ) 加载图像。
  2. 图像预处理:
    • 转换为灰度: 将图像转换为灰度以简化处理 ( cv2.cvtColor ).
    • 二值化: 应用自适应阈值将图像转换为黑白,突出显示文本 ( cv2.adaptiveThreshold ).
    • 降噪: 使用形态学操作(打开)去除噪声和小的伪影,从而清理图像 ( cv2.morphologyEx ).
  3. 使用 Tesseract 进行 OCR: 使用 pytesseract.image_to_string 在预处理后的图像上执行 OCR。
  4. (可选)显示结果: 显示结果图像(二值化图像)以可视化预处理步骤的效果。

通过试验预处理技术和参数,可以进一步改进结果。还可以探索其他图像预处理技术,例如:

  • 去斜: 如果图像倾斜,则校正图像方向。
  • 缩放: 有时,放大图像可以帮助 Tesseract 更好地识别字符。
  • 去边框: 从图像中移除任何边框或线条,这些边框或线条可能会干扰文本提取过程。

请记住,在处理具有挑战性的图像时,没有一种万能的解决方案,并且可能需要调整预处理步骤和 Tesseract 配置以获得最佳结果。

标签:python,python-tesseract
From: 73269373

相关文章

  • python-myStudyList
     1  下载软件1.1下载python最新版本并安装下载地址:百度搜索python官网。WelcometoPython.org。 1.2官网学习网页:PythonTutorials–RealPython   1.3也可以下载集成环境软件Anaconda。 Anaconda软件商城官方正版免费下载(msc23.cn) 2 ......
  • Python语法基础
    基本语句输入input() eg:输出print(内容)注释单行注释:#注释内容多行注释:"""注释内容"""数据类型: 字面量:整型、浮点数、字符串......intfloatstring查看数据类型:type(数据)查看数据类型 转换函数int(x):将x转换成整数类型float(x):将x转......
  • PyTesseract 不提取文本?我是所有这些Python的新手,请需要h3lp
    它不想从图像中提取文本,就像终端保持黑色并带有空格,就像它实际上试图提取文本一样,这是我的代码和图像从PIL导入图像导入pytesseract导入CV2“C:\用户\埃米利亚诺\下载\practic.png”pytesseract.pytesseract.tesseract_cmd="C:\ProgramFiles\Tesseract-OCR\tesseract.exe......
  • Python安装第三方库
    Python安装PILPIL(PythonImagingLibrary)是一个旧的Python库,用于处理图像。然而,PIL已经不再维护,并被一个名为Pillow的库所取代。Pillow是PIL的一个分支,并且完全兼容PIL。建议使用Pillow而不是PIL。pipinstallpillowPython安装moviepymoviepy是一个用于视频编辑的Python库,......
  • 优化Python中图像中的OCR文本检测
    我目前正在用python编写一个程序,该程序获取包含大量文本的图像,将其提取到.txt文件,然后将找到的单词与另一个文件中的单词列表进行比较,并创建一些坐标(根据像素)在图像中找到的单词中,如果找到图像,则会在图像中绘制红色方块。到目前为止,我已经正确处理了坐标部分,在单词周围绘制了......
  • Python保存字典类型数据到文件的三种方法
    1、在Python中使用pickle模块的dump函数将字典保存到文件中importpicklemy_dict={'Apple':4,'Banana':2,'Orange':6,'Grapes':11}#保存文件withopen("myDictionary.pkl","wb")astf:pickle.dump(my_dict,tf)......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-53- 处理面包屑(详细教程)
    1.简介面包屑(Breadcrumb),又称面包屑导航(BreadcrumbNavigation)这个概念来自童话故事“汉赛尔和格莱特”,当汉赛尔和格莱特穿过森林时,不小心迷路了,但是他们发现沿途走过的地方都撒下了面包屑,让这些面包屑来帮助他们找到回家的路。所以,面包屑导航的作用是告诉访问者他们在网站中......
  • 如何使用 Python 在 Telegram 中进行标签搜索
    Telegram最近添加了一项新功能,可以在所有公共频道中同时按主题标签进行搜索:https://telegram.org/blog/message-effects-and-more#hashtag-search如何进行此类搜索用蟒蛇?(Telethon,Python-Telegram-Bot,...)我在Telethon文档中找到了这个函数:https://tl.......
  • 使用 Python 构建一个简单的 REST API
    使用Python构建一个简单的RESTAPI简介本文档将引导您使用Python和Flask框架构建一个简单的RESTAPI。我们将创建一个API,用于管理一个虚拟的书籍数据库。准备工作Python环境:确保您的系统上安装了Python3.x。Flask框架:使用pip安装Flask:pipinstallFla......
  • python学习之闭包与装饰器
    一、闭包闭包允许一个函数访问并操作函数外部的变量(即父级作用域中的变量),即使在该函数外部执行。特性:(1)外部函数嵌套内部函数。(2)外部函数可以返回内部函数。(3)内部函数可以访问外部函数的局部变量。defout():print("我是外层")n=10defins():......