如何使用 Tesseract 对图像进行 OCR

2023-12-04

我开始学习 OpenCV 和 Tesseract,并且在一个看似非常简单的示例上遇到了麻烦。

这是我尝试 OCR 的图像,内容为“171 m”:

original image

我做了一些预处理。由于蓝色是文本的主色,因此我提取蓝色通道并应用简单的阈值处理。

img = cv2.imread('171_m.png')[y, x, 0]
_, thresh = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY_INV)

结果图像如下所示:

blue channel, simple threshold

然后将其放入 Tesseract 中,psm 7对于单行:

text = pytesseract.image_to_string(thresh, config='--psm 7')
print(text)
>>> lim

我还尝试限制可能的字符,结果好一点,但还不够。

text = pytesseract.image_to_string(thresh, config='--psm 7 -c tessedit_char_whitelist=1234567890m')
print(text)
>>> 17m
OpenCV v4.1.1.
Tesseract v5.0.0-alpha.20190708

任何帮助表示赞赏。


在将图像放入 Pytesseract 之前,预处理会有所帮助。所需的文本应为黑色,而背景应为白色。这是一个方法

  • 将图像转换为灰度并放大图像
  • 高斯模糊
  • 大津的门槛
  • 反转图像

转换为灰度后,我们使用以下方法放大图像imutils.resize()和高斯模糊。从这里我们Otsu的阈值得到二值图像

enter image description here

如果您有噪声图像,则额外的步骤是使用形态学操作来平滑或消除噪声。但由于你的图像足够干净,我们可以简单地反转图像来得到我们的结果

enter image description here

使用 Pytesseract 的输出--psm 6

171m

import cv2
import pytesseract
import imutils

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

image = cv2.imread('1.png',0)
image = imutils.resize(image, width=400)
blur = cv2.GaussianBlur(image, (7,7), 0)
thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
result = 255 - thresh 

data = pytesseract.image_to_string(result, lang='eng',config='--psm 6')
print(data)

cv2.imshow('thresh', thresh)
cv2.imshow('result', result)
cv2.waitKey()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Tesseract 对图像进行 OCR 的相关文章

  • 优化完美平方问题,类似于Python中的硬币找零

    我这里有一个硬币兑换的解决方案 python 中的 leetcode 硬币兑换 https stackoverflow com questions 69517078 coin change leetcode in python 因为完全平方
  • Pandas 字符串提取所有匹配项

    我正在学习 pandas 系列字符串方法中的正则表达式操作 我能够从字符串中提取第一个数字 但我的正则表达式与第二个数字不匹配 如何捕获这两个数字 注意第二行 第二个元素在这里是 NAN CODE import pandas as pd d
  • 如何忽略传递给函数的意外关键字参数?

    假设我有一些功能 f def f a None print a 现在 如果我有一本字典 比如dct a Foo 我可以打电话f dct 并得到结果Foo打印 但是 假设我有一本字典dct2 a Foo b Bar 如果我打电话f dct2
  • 如何使用 django (python) 和 s3 上传文件?

    我正在寻找一种将文件上传到 s3 的方法 我正在使用 django 我目前正在使用亚马逊的 python 库进行上传以及以下代码 View def submitpicture request fuser request session lo
  • Python grpc protobuf 存根生成问题:--grpc_out: protoc-gen-grpc: 插件失败,状态代码 1

    正如问题所说 我从源代码编译了 grpc 并且也做了sudo pip install grpcio 但是 那which grpc python plugin不返回任何内容 这是一个问题 因为route guide的grpc python示例
  • Spyder 导入模块出错

    我正在尝试在 Spyder 中使用 sklearn 一开始 当我尝试导入它时 我收到 ImportError No module named sklearn 然后我用 PYTHONPATH 管理器设置 PATH 然后使用工具菜单中的 更新模
  • 在 vim 折叠线中语法高亮 Python

    我发现代码折叠 http en wikipedia org wiki Code folding帮助我更好地组织我的文件 因此 在我的底部 vimrc 我启用vim代码折叠 http vimdoc sourceforge net htmldo
  • 使用 boto3 从 s3 下载时使用 filename 作为文件名

    我正在使用 boto3 上传文件 如下所示 client boto3 client s3 aws access key id id aws secret access key key client upload file tmp test
  • 如何为 Python 中的应用程序设置专用屏幕区域?

    MS OneNote 就是一个很好的例子 它可以选择固定在屏幕的一侧 并将所有其他窗口推到一侧 当最大化或调整其他窗口大小时 它们只能扩展到 OneNote 的边缘 Python 使用 Tkinter 或其他模块是否具有此功能 感谢您的帮助
  • 需要使用 php 从远程服务器下载与 $_FILES 相同的内容[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 好的 我有处理图像上传的 php 代
  • PyCharm - 如何挂起所有线程

    我们使用 PyCharm 5 0 1 进行多线程调试 当它在断点处停止时 只有特定线程停止 而所有其他线程继续 这使得 冻结时刻 和检查参数值以及其他线程的当前状态变得困难 当其中一个线程在断点处停止时 是否可以挂起所有线程 这在最新的 P
  • 检查多个 pd.DataFrame 是否相等

    是否有一种 Pythonic 方式 无循环或递归 来检查是否超过两个pd DataFrames 例如 pd DataFrames 列表 彼此相等吗 就像是 all x equals dfs 0 for x in dfs with dfs数据
  • 如何在 Sublime 2 REPL Mac 中运行 Python 3

    我的问题如下 我安装了 sublime 2 和 sublime repl 插件 一切正常 我唯一需要的是更改在控制台内置的 sublimerepl 上运行的 python 版本 我的意思是 我有 python 2 7 5 预先安装了 mav
  • Python:帮助(numpy)在退出时导致段错误

    我遇到了一个奇怪的现象 在 python 解释器中 我执行以下操作 gt gt gt import numpy gt gt gt help numpy 帮助显示正确 但一旦我按 q 返回解释器 Segmentation fault core
  • 如何可视化多维数据上的 kmeans 聚类

    我在 mnist 数据集上使用 kmeans 聚类算法 并希望可视化聚类后的图 到目前为止我做了这个 from mnist import MNIST mndata MNIST Datasets X train y train mndata
  • 如何保持 python 3 脚本 (Bot) 运行

    不是母语英语 抱歉 英语可能很蹩脚 我也是编程新手 您好 我正在尝试使用 QueryServer 连接到 TeamSpeak 服务器来创建机器人 经过几天的努力 它有效 只有 1 个问题 而我却被这个问题困扰了 如果您需要检查 这是我正在使
  • Pip 突然使用了错误版本的 Python

    在 os x 上使用 pip 时遇到一个奇怪的问题 据我所知 快速查看我的 bash history 似乎可以确认 我最近没有对我的配置进行任何更改 唉 pip 命令似乎突然使用了与以前不同的 python 版本 到目前为止 我使用命令 p
  • 如何配置 Eclipse 在使用 Pydev 插件选择“运行”或“调试”时启动浏览器

    我正在使用 Eclipse Pydev 插件学习 Python 和 Django 当我按 运行 或 调试 时 我希望内部或外部浏览器使用 URL http 127 0 0 1 启动或刷新 我见过用 PHP 插件完成的 但没有用 Pydev
  • 通过 ManyToManyField = Value 对 django 查询集进行排序

    如果有一些模型 例如 class Tag models Model name models CharField class Thing models Model title models CharField tags models Many
  • django admin 中内联模型的分页器

    我有这个简单的 django 模型 由一个传感器和特定传感器的值组成 每个日射强度计的值数量很多 gt 30k 是否可以以某种方式分页PyranometerValues在特定日期或一般情况下将分页器应用于管理内联视图 class Pyran

随机推荐

  • 使用行为一致但已弃用的 HTML 标签有何缺点?

    当用户访问我的网站时 他们不关心如何perfect或多少standard该页面已编码 他们只关心它是否有效 有些标签已被弃用 但在所有主要 次要和非常次要的浏览器中具有一致的行为 他们现在工作并且将来会工作 我不是在谈论optional标签
  • 如何在nodejs中将二进制缓冲区保存到png文件?

    我有包含位图信息的二进制nodejs Buffer 对象 如何从缓冲区中生成图像并将其保存到文件中 Edit 我尝试使用文件系统包 如 herchu 所说 但如果我这样做 let robot require robotjs let fs r
  • 在 golang 中创建静态二进制文件所需的标志

    我正在使用构建 Docker 镜像scratch作为基础 以下构建命令 RUN go build o go bin myapp 创建了一个执行时一直失败的二进制文件 standard init linux go 211 exec user
  • 在 PHP 中强制下载图像。在本地工作但在实时 Linux 服务器上崩溃

    我正在通过我的网站强制下载图像 强制下载在 Apache Windows 开发机器上运行良好 然而 当它在我的 Linux Web 服务器上运行时 它会将垃圾字符推送到屏幕上 e g JFIF H H 6Exif MM 火狐浏览器 垃圾 铬
  • 配置管理器和静态类

    我想用ConfigurationManager从 a 访问一些字符串值static班级 但是 我需要专门处理缺少值或存在空值的情况 现在我正在使用类型初始值设定项 例如 private static readonly string some
  • 如何从 DynamoDB 中的地图列表中删除(必须是原子的)

    我有这个架构 product S Primary Key my Hash media L List of Maps 每个媒体项目将如下所示 id S for example id uuid type S for example image
  • CAS 不适用于 VS2010 映射驱动器

    我有一个使用亚音速的项目 该项目是我在 Visual Studio 2008 中开发的 位于 C 驱动器上 那里没问题 我刚刚升级到 Visual Studio 2010 由于我的计算机碰巧死机了 我现在运行的是使用 VirtualBox
  • Java从char数组中删除重复项的方法

    我有一个由用户填充的字符数组 arrayInput 带有一些字符 例如 b d a b f a g a a f 我需要创建一个方法 该方法返回一个新的 char 数组 其中仅包含该字符的第一次出现 但按照输入的顺序 这本书还说 解决这个问题
  • 从 Kotlin Native 子类化 UIView

    UIKit 被设计为通过子类和重写方法来使用 通常 drawRectUIView 的 Objective C 方法在 SWIFT 中是这样实现的 import UIKit import Foundation class SmileView
  • 使用 TwitPic + OAuth 将照片 + 推文上传到 Twitter (.NET C#) - 为什么没有推文?

    我正在将照片上传到 TwitPic 使用OAuth 来自用 C 编写的 NET 应用程序 oAuth 的东西有点棘手 我找到了两段 NET 代码来处理它 但都不满意 DotNetOpenAuth看起来很重 超出了我的需要 只想进行 oAut
  • 索引操作删除属性

    显然 用属性索引列表会返回不带属性的列表 gt l lt list a 1 3 b 7 gt attr l x lt 67 gt l a 1 1 2 3 b 1 7 attr x 1 67 gt l c a b a 1 1 2 3 b 1
  • 我的带有表单身份验证的 ASP.NET MVC2 应用程序甚至阻止对图像、样式和脚本的访问

    我正在开发一个 MVC2 应用程序并在其上使用表单身份验证 脚本 图像和样式都被阻止给未登录的用户 因此 登录页面看起来很糟糕 它在本地运行良好 问题是当我发布到服务器时 有谁知道为什么吗 PS 服务器IIS版本为7 5 My 网页配置
  • 对象到对象映射实用程序

    我喜欢将公共和域完全分开objects 所以 nHibernate 在这里不会提供帮助 这最终迫使我编写大量代码来将一个对象映射到另一个对象 有哪些工具 插件可以消除在 NET 中手动执行此映射的单调乏味 每当我 Google 搜索此内容时
  • 使用 tr1::regex 时出现链接器错误

    我有一个程序使用tr1 regex 当它编译时 它给了我非常详细的链接器错误 这是我的头文件 MapObject hpp include
  • SQL Server 查询优化:Where (Col=@Col 或 @Col=Null)

    不知道从哪里开始 不确定问题是否是我欺骗了查询优化器 或者它是否是涉及空值时索引工作方式的固有问题 我遵循的一种编码约定是对存储过程进行编码 如下所示 declare procedure SomeProc ID int null as se
  • 使用 Worklight Console 部署应用程序失败:“无法部署应用程序 .wlapp”。:错误

    我正在使用 Worklight 5 0 6 20130311 0918 在 RedHat Linux 上的 WebSphere 应用程序服务器 7 0 0 21 上运行 并且我正在尝试使用 Worklight Console 部署应用程序
  • Javascript 焦点和选择在 FF 中不起作用

    使用jQuery 以下在FF中不起作用 但在IE中有效 this focus select 我环顾四周 发现你可以使用超时来解决这个问题 但如果我可以避免的话 这不是我想做的事情 有谁知道另一种方法来做到这一点并让它在 FF 中工作 都会
  • SQL Server 跟踪日期变化时的计划班次

    我什至不知道从哪里开始解决这个问题 我需要从我们的 MS SQL 2012 数据库查询生产数据 该数据库具有基于记录的班次的日期时间戳 棘手的部分是我们运行 4 个 12 小时班次采用 2 开 2 关 3 开 2 关的模式 即 2013 年
  • 如何绘制立方体的面?

    我已经做了一个可以在 python 上旋转的立方体 但现在我想为这些面着色 以便在旋转时识别每个面 代码如下 from mpl toolkits mplot3d import Axes3D import matplotlib pyplot
  • 如何使用 Tesseract 对图像进行 OCR

    我开始学习 OpenCV 和 Tesseract 并且在一个看似非常简单的示例上遇到了麻烦 这是我尝试 OCR 的图像 内容为 171 m 我做了一些预处理 由于蓝色是文本的主色 因此我提取蓝色通道并应用简单的阈值处理 img cv2 im