使用 pytesseract 构建一个简单 OCR demo

简介

pytesseract 库是 Google Tesseract OCR (光学字符识别)引擎的一个 Python 封装库,使用广泛且功能强大。

构建

使用 pytesseract 构建一个简单 OCR demo。
步骤一:安装必要的库
您需要在您的 Python 环境中安装 pytesseract、Pillow (用于图像处理) 和 OpenCV (虽然不是必需的,但在处理图像时非常有用)。
打开终端或命令提示符,运行以下命令:

pip install pytesseract Pillow opencv-python

步骤二:安装 Tesseract OCR 引擎
pytesseract 只是一个 Python 接口,它需要后台安装的 Tesseract OCR 引擎才能工作。Tesseract 的安装方法因操作系统而异:
Windows: 您可以从 Tesseract 官方 GitHub release 页面 下载安装程序。安装时请记住安装路径,之后可能需要在代码中指定 Tesseract 的可执行文件路径。
macOS: 使用 Homebrew 进行安装:

    brew install tesseract

中文识别 :如果您需要识别中文,请确保:

  • 已通过 brew install tesseract-lang 安装了中文字体数据。
  • 在调用 image_to_string 时使用 lang=‘chi_sim’ (简体中文) 或 lang=‘chi_tra’ (繁体中文)。

Linux (Ubuntu/Debian): 使用 apt-get 进行安装:

    sudo apt-get install tesseract-ocrsudo apt-get install libtesseract-dev

步骤三:编写 Python 代码
创建一个 Python 文件 (例如 simple_ocr.py) 并粘贴以下代码。

import pytesseract
from PIL import Image
import cv2
import os # 获取当前脚本文件的绝对路径
script_path = os.path.abspath(__file__)
# 获取脚本文件所在的目录
script_dir = os.path.dirname(script_path)# 如果您是Windows用户,并且Tesseract没有添加到系统环境变量中。
# tesseract_cmd_path = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # windows
tesseract_cmd_path = r'/opt/homebrew/bin/tesseract' # macOS/Linux 查询命令:which tesseract # Check if the tesseract executable exists at the specified path
if not os.path.exists(tesseract_cmd_path):print(f"Error: Tesseract executable not found at {tesseract_cmd_path}")print("Please update 'tesseract_cmd_path' in the script to your Tesseract installation path.")
else:pytesseract.pytesseract.tesseract_cmd = tesseract_cmd_path# 指定您要进行OCR的图片文件路径
image_path = 'test_image.png' # 请替换为您的图片文件路径
image_path = os.path.join(script_dir, image_path)
# Check if the image file exists
if not os.path.exists(image_path):print(f"Error: Image file not found at {image_path}")print("Please make sure the image file exists and the path is correct.")
else:try:# 使用 Pillow 加载图片# img = Image.open(image_path)# 或者使用 OpenCV 加载图片,方便后续图像处理img_cv = cv2.imread(image_path)# 如果使用 OpenCV 加载,需要转换为 PIL Image 对象或直接传给 image_to_string (cv2.imread returns numpy array)# pytesseract.image_to_string 可以接受 PIL Image 对象或 numpy array# 我们这里直接使用 numpy arrayimg_np = cv2.cvtColor(img_cv, cv2.COLOR_BGR2RGB) # OpenCV读取是BGR格式,Tesseract通常处理RGB# 使用 pytesseract.image_to_string 进行文字识别# lang 参数可以指定语言,例如 'eng' 表示英语,'chi_sim' 表示简体中文# 您需要安装对应语言的 Tesseract 语言包, macOS/Linux: brew install tesseract-langtext = pytesseract.image_to_string(img_np, lang='chi_sim') # 或者 lang='eng' for English# 打印识别结果print("---- 识别结果 ----")print(text)print("----------------")

步骤四:准备测试图片
创建一个名为 test_image.png 的图片文件,其中包含一些您想要识别的文字,并将其放在与 Python 脚本相同的目录下。
在这里插入图片描述

步骤五:运行代码
在终端或命令提示符中,导航到保存 simple_ocr.py 文件的目录,然后运行:

python simple_ocr.py

如果一切顺利,您将在控制台中看到从图片中识别出的文字。
在这里插入图片描述

注意事项:

Tesseract 安装路径:

  • 如果您在 Windows 上运行,请务必将 tesseract_cmd_path 变量的值修改为您系统中 tesseract.exe 的实际安装路径。
  • 在 macOS 或 Linux 上,如果 Tesseract 已通过包管理器安装并添加到 PATH 中,代码中的默认路径通常是正确的,或者您也可以尝试注释掉设置 pytesseract.pytesseract.tesseract_cmd 的那一行,让 pytesseract 自己去寻找。

语言包:

  • 如果您需要识别非英文字符(例如中文),您还需要安装对应的 Tesseract 语言包,并在 pytesseract.image_to_string 函数中指定 lang 参数,例如 lang=‘chi_sim’。
  • 语言包的安装通常是将对应的 .traineddata 文件放到 Tesseract 安装目录下的 tessdata 文件夹中。

图片质量:

  • OCR 识别效果很大程度上取决于输入图片的质量。清晰、高对比度、文字方向正确的图片更容易识别。
  • 对于有噪声或扭曲的图片,您可能需要使用 OpenCV 等库进行预处理(如二值化、去噪、旋转矫正)来提高识别率。代码中也提供了加载图片并进行颜色空间转换的部分,为可能的预处理留下了空间。

进一步探索 pytesseract 的其他功能

  • 例如 image_to_data 获取文字位置信息、image_to_boxes 获取字符边界框等,以便构建更复杂的 OCR 应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/82965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十三: 神经网络的学习

这里所说的“学习”是指从训练数据中自动获取最优权重参数的过程。为了使神经网络能进行学习,将导入损失函数这一指标。而学习的目的就是以该损失函数为基准,找出能使它的值达到最小的权重参数。为了找出尽可能小的损失函数的值,我们将介绍利…

AWS 创建VPC 并且添加权限控制

AWS 创建VPC 并且添加权限控制 以下是完整的从0到1在AWS中创建VPC并配置权限的步骤(包含网络配置、安全组权限和实例访问): 1. 创建VPC 步骤: 登录AWS控制台 访问 AWS VPC控制台,点击 创建VPC。 配置基础信息 名称…

ICASSP2025丨融合语音停顿信息与语言模型的阿尔兹海默病检测

阿尔兹海默病(Alzheimers Disease, AD)是一种以认知能力下降和记忆丧失为特征的渐进性神经退行性疾病,及早发现对于其干预和治疗至关重要。近期,清华大学语音与音频技术实验室(SATLab)提出了一种将停顿信息…

C# 导出word 插入公式问题

最近遇到了一个问题,下载一个文档时需要下载word可编辑的公式。找了很久终于找到了一种解决办法。下面是以C#代码来实现在Word中插入公式的功能。 目录 一、引入dll程序集文件1、通过 NuGet 引入dll(2种方法)的方法:2、手动添加d…

智汇云舟携最新无人机2D地图快速重建技术亮相广西国际矿业展览会

5月22至25日,广西国际矿业展览会(以下简称 “矿业展”)在南宁国际会展中心成功举办。智汇云舟与合作伙伴广西空驭数智信息技术有限公司携无人机 2D地图快速重建技术,以及视频孪生智慧矿山解决方案参会,为矿山行业数字化…

OpenSSL 签名验证详解:PKCS7* p7、cafile 与 RSA 验签实现

OpenSSL 签名验证详解:PKCS7* p7、cafile 与 RSA 验签实现 摘要 本文深入剖析 OpenSSL 中 PKCS7* p7 数据结构和 cafile 的作用及相互关系,详细讲解基于 OpenSSL 的 RSA 验签字符串的 C 语言实现,涵盖签名解析、证书加载、验证流程及关键要…

9:OpenCV—模板匹配

模版匹配 1、模板匹配概念 模板匹配是一项在一副图像中寻找与另一幅模板图像最匹配(相似)部分的技术。模板匹配不是基于直方图的,而是通过在输入图像上滑动图像块(模板)同时对比相似度,来对模板和输入图像…

Composer 常规操作说明与问题处理

目录 一、 Composer 简介,安装二、全局配置三、项目配置(composer.json)3.1 composer.json 文件1. 基础字段信息2. **require(生产环境依赖)**3. **require-dev(开发环境依赖)** 3.2 composer.l…

Spring Boot 3.0与Java 17:企业级应用开发的新范式

引言 随着Spring Boot 3.0和Java 17的正式发布,企业级应用开发迎来了新的技术范式。这两项技术的结合不仅带来了性能提升,还引入了众多现代化的编程特性,为开发者提供了更强大、更高效的开发体验。本文将深入探讨Spring Boot 3.0与Java 17的…

Vue 组件 - 指令

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue指令 目录 指令写法 自定义指令 简单封装指令 指令传递字符串 update事件 指令应用 指令实现轮播 指令函数简写 指令函数列表 bind inserted update componentUpdated unbind Vue3指令轮播 nextick 总结 指…

5.28 后端面经

为什么golang在并发环境下更有优势 Go语言(Golang)在并发环境下的优势主要源自其设计哲学和内置的并发机制,这些机制在语言层面提供了高效、简洁且安全的并发编程工具。以下是其核心优势的详细分析: 1. Goroutine:轻量…

Linux线程入门

目录 Linux线程概念 什么是线程 重新理解进程 线程的优点 线程的缺点 线程的异常 线程用途 Linux线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至…

通信应用高速模数转换器ADC

在5G通信、医疗成像、航空航天及工业自动化等关键领域,高速ADC模数转换器作为信号链的“心脏”,其性能直接决定了系统的精度与效率。然而,如何精确测试高速ADC的动态参数、优化设计验证流程、应对复杂应用场景的挑战,始终是工程师…

PostgreSQL 中 JSONB 数据类型的深度解析以及如何使用

一、JSONB 核心特性解析 1. 存储结构与优势 ​​二进制存储​​:将 JSON 数据解析为二进制格式(分解键值对,去除空格和重复键)​​高效查询​​:支持 GIN/GiST 索引,查询速度比 JSON 类型快 10 倍​​数据…

C++_核心编程_ 左移运算符重载 “<<” 左移运算符

作用&#xff1a;可以输出自定义数据类型 */ //目标 调用p1,输出Person 中的属性 m_A ,m_B &#xff1a; /* #### 4.5.2 左移运算符重载 “<<” 左移运算符 作用&#xff1a;可以输出自定义数据类型 *///目标 调用p1,输出Person 中的属性 m_A ,m_B &#xff1a; class…

thinkphp 5.1 部分知识记录<一>

1、配置基础 惯例配置->应用配置->模块配置->动态配置 惯例配置:核心框架内置的配置文件,无需更改。应用配置:每个应用的全局配置文件(框架安装后会生成初始的应用配置文件),有部分配置参数仅能在应用配置文件中设置。模块配置:每个模块的配置文件(相同的配置…

数据结构 -- 树相关面试题

二、树相关的填空题 1.对于一个具有 n 个结点的二叉树&#xff0c;当它为一棵 ________ 二叉树时&#xff0c;具有最小高度&#xff0c;即为 ________&#xff1b;当它为一棵单支树时具有最大高度&#xff0c;即为 ________。 2.对于一个具有 n 个结点的二叉树&#xff0c;当它…

2025河北CCPC 题解(部分)

签到题&#xff1a;AC代码如下 &#xff1a; // Problem: H - What is all you need? // Contest: Virtual Judge - sdccpc20250526 // URL: https://vjudge.net/contest/718568#problem/H // Memory Limit: 1024 MB // Time Limit: 1000 ms // // Powered by CP Editor (ht…

计算机视觉---YOLOv4

YOLOv4&#xff08;You Only Look Once v4&#xff09;于2020年由Alexey Bochkovskiy等人提出&#xff0c;是YOLO系列的重要里程碑。它在YOLOv3的基础上整合了当时最先进的计算机视觉技术&#xff0c;实现了检测速度与精度的显著提升。以下从主干网络、颈部网络、头部检测、训练…

OpenCV 第7课 图像处理之平滑(一)

1. 图像噪声 在采集、处理和传输过程中,数字图像可能会受到不同噪声的干扰,从而导致图像质量降低、图像变得模糊、图像特征被淹没,而图像平滑处理就是通过除去噪声来达到图像增强的目的。常见的图像噪声有椒盐噪声、高斯噪声等。 1.1 椒盐噪声 椒盐噪声(Salt-and-pepper N…