python 实现识别图片上的数字

针对“python 实现识别图片上的数字”这个需求,我们可以通过以下步骤来完成:

1. 下载所需工具库

我们需要下载并安装两个工具库:

  • PIL:一个 Python 图像处理库,可用于加载、调整和保存各种图像格式的文件。
  • pytesseract:一个 OCR(光学字符识别)引擎,能够识别并提取图像中的字符。

可以使用 pip 命令来下载这两个库:

pip install pillow pytesseract

2. 准备样本数据

我们需要准备一些待识别的数字图片作为样本数据。这些图片需要符合以下条件:

  • 图片中只包含一个数字。
  • 数字的颜色与背景有明显的对比,便于 OCR 引擎正确识别。
  • 图片应该是垂直方向的,这样 OCR 引擎才能准确识别出数字的方向。

样本数据可以通过在线字体生成器(如 fontjoy.com)生成,或者手工制作。

3. 编写 Python 代码

下面是一个示例代码,可以从指定文件夹中读取样本图片,识别图片中的数字,并输出识别结果:

from PIL import Image
import pytesseract
import os

# 设置 pytesseract 路径
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

# 待识别图片所在文件夹
image_folder = "images"

for filename in os.listdir(image_folder):
    if filename.endswith(".png") or filename.endswith(".jpg"):
        # 加载图片并将图片转换成灰度图像
        image = Image.open(os.path.join(image_folder, filename)).convert("L")

        # 调用 pytesseract 识别数字
        text = pytesseract.image_to_string(image, config="--psm 10")

        # 处理识别结果
        text = text.strip()
        if len(text) == 1 and text.isdigit():
            print(f"File {filename} contains digit: {text}")
        else:
            print(f"File {filename} does not contain a single digit.")

在这个示例代码中,我们首先设置 pytesseract 的路径(如果你已经将其添加到环境变量中,则可以跳过此步骤)。

然后循环读取指定文件夹中的图片文件,对于每个图片,我们首先将其转化为灰度图像,然后调用 pytesseractimage_to_string 函数来识别数字。config 参数用于指定识别的模式,这里我们使用模式 10 (Page segmentation mode 10), 使其更适用于识别垂直文本。最后,我们处理识别结果并输出。

示例1

假设我们有以下两个图片,分别是 3.png 和 4.png,它们保存在 images 文件夹下:

3.png:

3

4.png:

4

运行示例代码后,输出结果为:

File 3.png contains digit: 3
File 4.png contains digit: 4

示例2

我们还可以扩展代码,将识别的数字保存到另一个文件中。代码如下:

for filename in os.listdir(image_folder):
    if filename.endswith(".png") or filename.endswith(".jpg"):
        image_path = os.path.join(image_folder, filename)

        # 加载图片并将图片转换成灰度图像
        image = Image.open(image_path).convert("L")

        # 调用 pytesseract 识别数字
        text = pytesseract.image_to_string(image, config="--psm 10")

        # 处理识别结果
        text = text.strip()
        if len(text) == 1 and text.isdigit():
            print(f"File {filename} contains digit: {text}")
            with open("digits.txt", "a") as f:
                f.write(f"{filename} {text}\n")
        else:
            print(f"File {filename} does not contain a single digit.")

现在当我们运行代码时,输出不仅会打印出识别结果,还会将识别的数字保存到 digits.txt 文件中。

针对其他细节和要求,还可以进一步完善代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 实现识别图片上的数字 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Python爬虫基础之XPath语法与lxml库的用法详解

    XPath语法是Python爬虫中常用的一种选择器,可以用于定位HTML或XML文档中的元素。在本文中,我们将深入讲解XPath语法的基础知识和lxml库的用法,并提供两个示例,以便更好地理解这个过程。 XPath语法基础 XPath语法是一种用于选择XML或HTML文档中元素的语言。XPath使用路径表达式来选择元素或元素集合。以下是XPath语法的一些基…

    python 2023年5月15日
    00
  • Python爬取微信小程序Charles实现过程图解

    当你需要用Python爬取微信小程序的数据时,你可以使用Charles代理工具来进行抓包,获取请求和响应数据。下面是Python爬取微信小程序Charles实现过程的详细攻略: 步骤1:安装和配置Charles 首先,你需要在电脑上安装并启动Charles。安装完Charles之后,在Charles的Proxy菜单栏中找到Proxy Settings,把Pr…

    python 2023年5月23日
    00
  • Python抓取淘宝下拉框关键词的方法

    本文将介绍如何使用Python抓取淘宝下拉框关键词的方法。以下是本文将介绍的: 使用Selenium库模拟浏览器操作 使用BeautifulSoup库解析页面内容 抓取淘宝下拉框关键词 示例说明 使用Selenium库模拟浏览器操作 在Python中,我们可以使用Selenium库模拟浏览器操作。以下是使用Selenium库模拟浏览器操作的示例代码: fro…

    python 2023年5月14日
    00
  • python 读取Linux服务器上的文件方法

    下面是完整的攻略: Python 读取 Linux 服务器上的文件方法 Linux 作为服务器操作系统的优势之一就是文件系统十分稳定和强大,而在Python 中读取、处理这些文件也不太需要担心其可靠性的问题。下面就是 Python 读取 Linux 服务器上的文件方法的详细步骤: 1. 使用 Python 的 SSH 库连接 Linux 服务器 Python…

    python 2023年6月5日
    00
  • 如何在Python中进行函数式编程?

    Python是一门支持函数式编程(Functional Programming)的语言,可以通过以下方式来进行函数式编程: 1.使用匿名函数Lambda Lambda可以创建匿名函数,使得简短的代码更加简洁。可以通过以下方式使用Lambda函数: square = lambda x: x**2 print(square(5)) # 输出: 25 # 此处的 …

    python 2023年4月19日
    00
  • 解决Python中list里的中文输出到html模板里的问题

    在Python中,如果列表中包含中文字符,输出到HTML模板中可能会出现乱码的问题。这是因为HTML模板默认使用的是UTF-8编码,而Python默认使用的是ASCII编码。为了解决这个问题我们需要将列表中的中文字符转换为UTF-8编码。下面是两种解决方法: 方法一:使用str.encode()函数 可以使用str.encode()函数将列表中的中文字符转换…

    python 2023年5月13日
    00
  • 如何在 Windows 上安装 PyGI(Python Gobject Introspection)?

    【问题标题】:How to install PyGI (Python Gobject Introspection) on Windows?如何在 Windows 上安装 PyGI(Python Gobject Introspection)? 【发布时间】:2023-04-02 18:06:01 【问题描述】: 安装python解释器:http://pytho…

    Python开发 2023年4月8日
    00
  • python实现带声音的摩斯码翻译实现方法

    Python实现带声音的摩斯码翻译实现方法 本文将介绍Python如何实现带声音的摩斯码翻译。使用摩斯码是一种常见的编码方式,用于传输文本信息。在本文中,将通过Python编程语言实现用户输入文本转换为摩斯码的过程,并将其转换为声音输出。 实现步骤 步骤1:定义摩斯码表 摩斯码表是将字符转换为摩斯码序列的关键所在。我们首先需要定义一个包含英文字母、数字和符号…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部