使用Python Pytesseract进行OCR识别

介绍

在数字化时代,OCR(Optical Character Recognition)技术成为了智能化信息处理的重要手段,利用OCR技术能够将纸质的、印刷的文字自动化地转换成数字的电子文件,为人们的信息化生活带来了巨大便利。随着深度学习技术的不断发展,OCR技术的准确度和识别速度得到了极大提升,其中Python语言的开源OCR库Pytesseract就是一款非常受欢迎的技术方案。

使用

Pytesseract是在Python下使用谷歌的Tesseract-OCR引擎的开源包,利用简单的代码即可快速实现OCR识别任务。下面将从图像预处理、文字分割、OCR识别三个方面详细介绍Pytesseract的使用方法。

图像预处理

在进行OCR识别任务之前,必须对图像进行预处理,以提高识别准确度和速度。常用的图像预处理包括二值化、降噪、去除干扰、倾斜矫正等操作。

import cv2
import numpy as np

def preprocess(image):
    # 灰度化
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # 高斯模糊
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)
    # 自适应二值化
    thresh = cv2.adaptiveThreshold(blurred, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 11, 2)
    # 膨胀
    kernel = np.ones((3,3), np.uint8)
    dilation = cv2.dilate(thresh, kernel, iterations=1)
    # 返回预处理后的图像
    return dilation

文字分割

在进行OCR识别任务时,由于文本字符的分布和排版具有特殊性,需要对图像进行适当的分割和定位,以准确地识别每个字符。

def find_text_boxes(image):
    # 二值化
    image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    _, binary = cv2.threshold(image, 190, 255, cv2.THRESH_BINARY)
    # 腐蚀
    kernel = np.ones((3, 3), np.uint8)
    binary = cv2.erode(binary, kernel, iterations=1)
    # 轮廓检测
    contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    # 遍历轮廓
    boxes = []
    for contour in contours:
        x, y, w, h = cv2.boundingRect(contour)
        # 根据轮廓大小过滤无意义边框
        if w < 10 or h < 10:
            continue
        box = [x, y, x+w, y+h]
        boxes.append(box)
    return boxes

OCR识别

在进行预处理和分割后,即可利用Pytesseract进行OCR识别任务。

import pytesseract

def ocr(image):
    # 图像预处理
    image = preprocess(image)
    # 文字分割
    boxes = find_text_boxes(image)
    # OCR识别
    result = ''
    for box in boxes:
        text = pytesseract.image_to_string(image[box[1]:box[3], box[0]:box[2]], lang='chi_sim')
        result += text
    return result

小结

利用Python Pytesseract进行OCR识别任务可以有效地提高信息处理效率和准确度。本文从图像预处理、文字分割和OCR识别三个方面介绍了Pytesseract的使用方法,希望能够为读者提供参考。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/187058.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-27 13:34
下一篇 2024-11-27 13:35

相关推荐

  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29

发表回复

登录后才能评论