使用 OCR python 读取图像上的数字

2024-01-05

我正在尝试使用 Python 和 tesseract 中的 OpenCV 提取图像上的数字。这是我的尝试,但我什么也没得到。该代码没有返回预期的数字

import fitz, pytesseract, os, re
import cv2

sTemp = "Number.png"
directory = '.\MyFolder'

def useMagick(img):
    pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
    command = 'magick convert {} -resize 1024x640 -density 300 -quality 100 {}'.format(img, sTemp)
    os.system(command)

def readNumber(img):
    img = cv2.imread(img)
    gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    txt = pytesseract.image_to_string(gry)
    print(txt)
    try:
        return re.findall(r'\d+\s?\/\s?(\d+)', txt)[0]
    except:
        blur = cv2.GaussianBlur(gry, (3,3), 0)
        txt = pytesseract.image_to_string(blur)
        try:
            return re.findall(r'\d+\s?\/\s?(\d+)', txt)[0]
        except:
            return 'REVIEW'

sPath = os.path.join(directory, sTemp)
useMagick(sPath)
x = readNumber(sPath)
print(x)

Here's sample of the images enter image description here

该代码不返回任何数字。如何提高此类图像的质量以便能够提取数字?


经过多次查找,终于解决了问题

import cv2
import numpy as np
import pytesseract
import os, re

sImagesPath = r'MyFolder/'
mylist = []

def replace_chars(text):
    list_of_numbers = re.findall(r'\d+', text)
    result_number = ''.join(list_of_numbers)
    return result_number

for root, dirs, file_names in os.walk(sImagesPath):
    for file_name in file_names:
        img = cv2.imread(sImagesPath + file_name)
        gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        thr = cv2.adaptiveThreshold(gry, 181, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 13, 10)
        txt = pytesseract.image_to_string(thr, lang='eng',config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')
        mylist.append(replace_chars(txt))
        print(replace_chars(txt))

with open('Output.txt', 'w') as f:
    for i in mylist:
        s = ''.join(map(str, i))
        f.write(s + '\n')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 OCR python 读取图像上的数字 的相关文章

  • 如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

    我在 Cloud9 中使用 Python AWS CDK 并且我部署简单的 Lambda 函数那应该是发送 API 请求到 Atlassian 的 API当对象上传到 S3 存储桶时 也是由 CDK 创建的 这是我的 CDK 堆栈代码 fr
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 从零开始的 numpy 形状意味着什么

    好的 我发现数组的形状中可以包含 0 对于将 0 作为唯一维度的情况 这对我来说是有意义的 它是一个空数组 np zeros 0 但如果你有这样的情况 np zeros 0 100 让我很困惑 为什么这么定义呢 据我所知 这只是表达空数组的
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 如何通过在 Python 3.x 上按键来启动和中断循环

    我有这段代码 当按下 P 键时会中断循环 但除非我按下非 P 键 否则循环不会工作 def main openGame while True purchase imageGrab if a sum gt 1200 fleaButton ti
  • Python urllib.request.urlopen:AttributeError:'bytes'对象没有属性'data'

    我正在使用 Python 3 并尝试连接到dstk 我收到错误urllib包裹 我对SO进行了很多研究 但找不到与这个问题类似的东西 api url self api base street2coordinates api body jso
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 使用 NumPy 将非均匀数据从文件读取到数组中

    假设我有一个如下所示的文本文件 33 346 1223 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15
  • BRISK 特征检测器检测零个关键点

    下面显示的 Brisk 探测器没有给我任何关键点 有人可以提出一个问题吗 我将尝试用一些代码解释我在下面所做的事情 include opencv2 features2d features2d hpp using namespace cv u
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f

随机推荐

  • 如何使用 CloudFormation 为特定 Lambda 设置 Lambda 警报?

    这是CloudFormation的结构Alarm from AWS文档 https docs aws amazon com AWSCloudFormation latest UserGuide aws properties cw alarm
  • 如何使用 Google Guava 中的 Throwables.propagateIfInstanceOf()?

    javadoc 示例 http guava libraries googlecode com svn tags release08 javadoc com google common base Throwables html propaga
  • 如何成为一名优秀的Python程序员? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • macOS:向 Cocoa 绑定公开 Swift 属性的正确方法

    我正在 Mac 上开发一个现有的 Swift Objective C 项目 并在代码中创建一些 UI 我根据我管理的 NSTableView 中的选择启用一个按钮without使用 NSArrayController 出于原因 我有一处房产
  • 为什么 as.data.frame 忽略 col.names = vector

    我顽固地尝试在一行中创建一个具有命名行和列的数据框 我意识到我可以通过使用 colnames forecast 轻松地做到这一点 但想简化一下 如果只是为了证明我可以做到这一点 以下不起作用 没有错误 但未设置列名 forecast lt
  • 如何在 iPad 中调整网页大小/重新缩放

    我有一个网站 其移动版本使用 jquery mobile 当我将其从纵向更改为横向时 它会正确放大 但当我翻转到纵向时 它会保持相同的缩放级别 并且比视图更宽 这会破坏用户体验 我使用常规 从我所做的所有搜索来看 这应该可以 不幸的是它不适
  • 处理“超规范化”数据

    我的雇主是一家小型办公用品公司 正在更换供应商 我正在浏览他们的电子内容 以得出一个强大的数据库模式 我们之前的模式几乎是在没有任何思考的情况下拼凑在一起的 这几乎导致了一个令人难以忍受的数据模型 其中包含损坏的 不一致的信息 新供应商的数
  • Laravel 控制器/模型/视图的命名约定是什么?

    我记得听说你应该以特殊的方式命名你的控制器 模型和视图 可以是单数 也可以是复数 我不记得要命名哪些内容 而且我在文档中找不到任何有关它的信息 我猜是这样的 控制器是复数 视图是复数的 模型是单一的 我走在正确的轨道上吗 我知道这只是一个惯
  • 移动时切比雪夫距离 x 坐标错误

    所以我正在复制移相器切比雪夫距离示例 并在解决方案之后here https stackoverflow com questions 75478712 this gamestate variable not recognized phaser
  • 如何在 Django REST Framework 的单元测试期间登录用户?

    这是我的 DRF 视图 api view GET permission classes IsAuthenticated def check user request user request user use user object her
  • mysql中三个表之间的内连接

    我有 3 个表叫做 公司 联系方式 活动 联系人具有公司的外键 公司拥有活动的外键 它们都有一个 名称 列 我需要一个连接表 其中包含联系人姓名 公司名称和活动名称 contact id name company id companies
  • 根据 Woocommerce 中选择的运输方式显示隐藏付款方式

    当我在灵活的运输插件表单 wpdesk 中选择指定的 运输方式 时 我想隐藏某些付款方式并启用另一种付款方式 我已经尝试过该代码 add filter woocommerce available payment gateways gatew
  • Sine CAShapeLayer 作为 CALayer 的掩模

    我正在尝试实现下一个奇怪的事情 我有一些点 我想将它们与正弦波联系起来 Next 方法返回用于绘制绘图的点数组 NSArray plotPointsBetweenPoint CGPoint pointA andPoint CGPoint p
  • 我有多个通过 StackView 推送的 qml 文件。如何将它们连接到 C++

    我的项目包含 6 个 qml 文件 main qml 打开一个新的 ApplicationWindow 并声明工具栏 它还使用 initalItem homescreen qml 初始化 StackView 在主屏幕上 我有不同的按钮 可以
  • 在元构建级别运行 sbt 命令

    sbt 允许我们在根项目级别运行 sbt 命令 如何在元构建级别运行命令 定义在root project project dir 我的用例是我的一些 sbt 插件具有相同依赖项的不同版本 并且较旧的依赖项被逐出 我想使用 sbt depen
  • 如何更改 Android Studio 中的语法突出显示颜色?

    在其他文本编辑器中 可以更改突出显示颜色 例如comment语言的PHP 如何在 Android Studio 中更改单独的突出显示颜色 前往设置 Ctrl Alt S 然后转到IDE 设置 gt 编辑器 gt 颜色和字体 从这里您可以选择
  • ManagedBean 参数不被接受并且 Bean 似乎不在范围内

    这使用来自相同的代码primefaces 树控件 http www primefaces org showcase labs ui treeEvents jsf ManagedBean name theName eager true 第一个
  • 使用 C# Nullable 引用类型将外部 dll 中的所有类型视为可为 null

    我在项目中使用 C Nullable 引用类型 并且引用了一些不支持 Nullable 引用类型的其他 dll 我可以以某种方式告诉编译器外部 dll 中的所有属性都可以为空吗 默认情况下 编译器将所有内容显示为非空 未注释代码中的值被视为
  • 如何在 Android Studio 中对齐/格式化代码?

    是否有一种方法 快捷方式 内置功能可以对齐操作数的代码 例如 符号 例如 有一个用于 Xcode 的 XAlign https github com qfish XAlign https github com qfish XAlign 允许
  • 使用 OCR python 读取图像上的数字

    我正在尝试使用 Python 和 tesseract 中的 OpenCV 提取图像上的数字 这是我的尝试 但我什么也没得到 该代码没有返回预期的数字 import fitz pytesseract os re import cv2 sTem