python图像识别库-pytesseract

news2025/2/28 15:56:46

内容目录

      • 一、安装
        • 1.安装tesseract OCR
          • 1) MAC中安装
          • 2) Windows中安装
          • 3) 中文报下载
      • 二、pytesseract的简单使用

pytesseract是python的一个用于图像提取的库, 它实际上是对Tesseract OCR引擎的封装。pytesseract使得在Python项目中调用Tesseract变得更加简便,主要用于从图像中提取和识别文本信息。

一、安装

1.安装tesseract OCR

需要先安装tesseract OCR
什么是OCR:

Tesseract OCR(Optical Character Recognition,光学字符识别)是一个开源的OCR引擎,最初由HP实验室开发,后由Google维护并持续优化。Tesseract设计用于识别打印文本和手写文本,支持多种语言,包括一些稀有和古语种。

Tesseract的工作原理是通过复杂的图像处理和机器学习算法来识别图像中的字符。其流程大致包括以下几个步骤:

  • 图像预处理:包括灰度化、二值化、降噪、倾斜校正等,以提高识别精度。
  • 文字检测:在图像中定位文本区域,区分文本和非文本区域。
  • 特征提取:从文本区域提取有助于识别字符的关键特征。
  • 字符识别:利用机器学习模型,如神经网络,将提取的特征与已知字符模板匹配,识别出字符。
  • 版面分析:理解文本的布局,如行、列、段落等,对于复杂文档的识别尤为重要。
  • 语言模型:结合语言上下文,提高识别准确率,特别是在识别模糊或有破损文字时。

Tesseract支持通过训练数据定制和优化特定的语言和字体,用户可以根据自己的需求训练特定领域的模型以提高识别精度。它提供命令行工具供用户直接使用,也开放API接口,允许集成到各种应用程序中,如Web服务、移动应用和桌面软件等。

1) MAC中安装
brew install tesseract

查看tesseract是否安装成功

tesseract --version

我电脑上安装后的目录在: /opt/homebrew/bin/tesseract

2) Windows中安装

官方提供了安装包, 可以在官网下载: tesseract OCR下载地址
在这里插入图片描述

tips: 需要注意, 因为mac用的brew安装的, 不用配置环境变量, 而windows下安装完需要配置环境变量

3) 中文报下载

下载中文包, 不然会识别不了中文
中文包下载地址

在这里插入图片描述

把文件下载后放到目录: /opt/homebrew/share/tessdata (我的目录在这, 按照真实语言库文件路径修改, 可以通过命令tesseract --list-langs查看)
查看所有语言库:

tesseract --list-langs

简单测试:

def extract_text_from_image(image_path):
    # 打开图片文件
    img = Image.open(image_path)

    # 使用pytesseract进行OCR识别,默认情况下它会调用Tesseract命令行工具
    text = pytesseract.image_to_string(img, lang='chi_sim')

    return text


if __name__ == "__main__":
    # 图片路径,请替换为你的图片路径
    image_path = './images/word_image1.png'
    text = extract_text_from_image(image_path)
    print(f"提取的文本内容:\n{text}")

图片:在这里插入图片描述

提取的文本内容:
江 使 用 pytesseract 进 行 0CR 识 别 , 默 认 情 况 下 它 会 调 用 Tesseract 命 令 行 工 具
text = pyteSsseract .image_to_stringCimg,1Lang=“chi_sim「 )

结果还是会有一些错误
配合图像识别的库可以包括两个: pytesseract和PIL, 可以简单的理解为, 前者负责从图像中提取文字信息,后者则提供图像处理功能,确保进入OCR引擎的图像最适合文字识别。

二、pytesseract的简单使用

识别文字: 从图片中提取出文字

# 打开图片文件
img = Image.open('your_image_path.jpg')

# 使用pytesseract进行OCR识别,默认是英文,可以加lang参数指定语言
text = pytesseract.image_to_string(img)

print(text)

预处理图像:为了提高识别率,可以先对图片进行预处理,如调整大小、灰度化、二值化等。

img = img.convert('L')  # 转为灰度图像
img = img.point(lambda x: 0 if x < 128 else 255, '1')  # 二值化

指定语言:如果图片中的文字不是英文,可以通过lang参数指定语言, 就是下载的语言包。

text = pytesseract.image_to_string(img, lang='chi_sim')  # 识别简体中文

区域识别:如果只需要识别图片中的一部分,可以先裁剪图片。

cropped_img = img.crop((left, top, right, bottom))
text = pytesseract.image_to_string(cropped_img)

除此之外还有很多高阶用法, 可以参考官网或者仓库
pytesseract github地址

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

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

相关文章

Python实现定时任务的方式

大家好&#xff0c;在当今数字化的时代&#xff0c;定时任务的需求在各种应用场景中频繁出现。无论是数据的定时更新、周期性的任务执行&#xff0c;还是特定时间点的操作触发&#xff0c;Python 都为我们提供了强大而灵活的手段来实现这些定时任务。当我们深入探索 Python 的世…

All-in-One WP Migration插件+汉化包+扩展优化版

下载地址&#xff1a;All-in-One WP Migration插件汉化包扩展优化版 此插件支持大量的 WordPress 主机&#xff0c;不用担心网站数据搬家不完全&#xff0c;它使用区块方式导入数据&#xff0c;可避免大多数主机的上传限制&#xff08;还原网站的时候&#xff09;。

C#WPF数字大屏项目实战04--设备运行状态

1、引入Livecharts包 项目中&#xff0c;设备运行状态是用饼状图展示的&#xff0c;因此需要使用livechart控件&#xff0c;该控件提供丰富多彩的图形控件显示效果 窗体使用控件 2、设置饼状图的显示图例 通过<lvc:PieChart.Series>设置环状区域 3、设置饼状图资源样…

Ubuntu系统配置DDNS-GO【笔记】

DDNS-GO 是一个基于 Go 语言的动态 DNS (DDNS) 客户端&#xff0c;用于自动更新你的 IP 地址到 DNS 记录上。这对于经常变更 IP 地址的用户&#xff08;如使用动态 IP 的家庭用户或者小型服务器&#xff09;非常有用。 此文档实验环境为&#xff1a;ubuntu20.04.6。 在Ubuntu…

bison flex 实现tiny语言的编译器

bison flex 实现tiny语言的编译器 项目地址&#xff1a;tiny-compiler 完成了词法分析&#xff0c;语法分析&#xff0c;中间代码生成&#xff0c;虚拟机执行&#xff0c;没有进行类型检查、错误处理和中间代码优化。 词法分析 %{ #include <iostream> #include "…

STM32——hal_SPI_(介绍)

SPI&#xff08;串行外围设备接口&#xff09;是一种高速的、全双工、同步的通信协议&#xff0c;通常用于短距离通信&#xff0c;尤其是在嵌入式系统中与各种外围设备进行通信。SPI接口由摩托罗拉公司推出&#xff0c;由于其简单和灵活的特性&#xff0c;它被广泛用于多种应用…

运行软件缺失vcruntime140.dll怎么办?vcruntime140.dll缺失的详细解决方法分享

vcruntime140.dll 是一个动态链接库文件&#xff0c;它是 Microsoft Visual C Redistributable Package 的一部分&#xff0c;为使用 Visual C 编译器开发的应用程序提供必要的运行时环境。该文件包含了大量应用程序运行时需要调用的库函数&#xff0c;这些函数是实现 C 标准库…

基于GFlowNets的蚁群抽样组合优化

本文将基于GFACS论文&#xff0c;探讨其核心思想、技术细节以及在实际应用中的优势。 GFlowNet&#xff1a;摊销MCMC成本的有效工具 GFACS的核心是GFlowNet&#xff0c;它通过训练学习状态转移的概率分布&#xff0c;从而替代传统的MCMC采样方法。GFlowNet的优势在于&#xff1…

真实场景 这周的任意一天,获取上周一到周日的时间范围-作者:【小可耐教你学影刀RPA】

用户场景 我想在这周的任意一天&#xff0c;获取上周一到周日的时间范围&#xff0c;应该怎么做 解决办法1 用指令解决 最简单 解决办法2 自己写逻辑 不过要用到 获取当前日期指令 当前是礼拜几

在 JavaScript 中实现数据加密与解密:Web Cryptography API 与 CryptoJS详解

在 JavaScript 中&#xff0c;可以使用 Web Cryptography API 或第三方库如 crypto-js 来实现加密和解密。本文将介绍如何使用这两种方法在客户端进行数据的加密和解密。 使用 Web Cryptography API Web Cryptography API 是现代浏览器提供的一个强大、原生的加密 API。它允许…

【AI大模型】Transformers大模型库(二):AutoModelForCausalLM

目录​​​​​​​ 一、引言 二、AutoModelForCausalLM 2.1 概述 2.2 主要功能 2.3 代码示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#xff0c;为huggingface上数以万计的预训练大模型提供预测、训练等服务。 &#x1f917; Transfo…

【Web API DOM10】日期(时间)对象

一&#xff1a;实例化 1 获取系统当前时间即创建日期对象 const date new Date() console.log(date) 2024年6月5日周三 2 获取指定的时间 以获取2025年6月29日为例 const date new Date(2025-6-29) console.log(date) 二&#xff1a;日期对象方法 1 使用场景&#xf…

代码随想录算法训练营第二十五天| 216. 组合总和 III、17. 电话号码的字母组合

[LeetCode] 216. 组合总和 III [LeetCode] 216. 组合总和 III 文章解释 [LeetCode] 216. 组合总和 III 视频解释 题目: 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该…

AI视频教程下载:给初学者的ChatGPT提示词技巧

你是否厌倦了花费数小时在可以通过强大的语言模型自动化的琐碎任务上&#xff1f;你是否准备好利用 ChatGPT——世界上最先进的语言模型——并将你的生产力提升到下一个水平&#xff1f; ChatGPT 是语言处理领域的游戏规则改变者&#xff0c;它能够理解并响应自然语言&#xf…

Vue01-vue的简介

一、Vue是什么&#xff1f; 一套用于构建用户界面的渐进式javaScript框架。 构建用户界面&#xff1a; 渐进式&#xff1a; 目前Vue的地位&#xff1a;生态完善&#xff0c;国内前端工程师必备技能。 二、Vue的特点 一个XXX.vue就是一个组件&#xff0c;封装的概念&#xff0c…

Spring系列-SpringMvc父子容器启动原理解析

1、Spring整合SpringMVC 特性&#xff1a; 说到Spring整合SpringMVC唯一的体现就是父子容器&#xff1a; 通常我们会设置父容器&#xff08;Spring&#xff09;管理Service、Dao层的Bean, 子容器(SpringMVC)管理Controller的Bean .子容器可以访问父容器的Bean, 父容器无法访…

面向长文本处理的键值缓存压缩技术:智能压缩,无损性能,免微调

随着输入长度的增加&#xff0c;大型语言模型&#xff08;LLMs&#xff09;中的键值&#xff08;KV&#xff09;缓存需要存储更多的上下文信息以维持性能&#xff0c;这导致内存消耗和计算时间急剧上升。KV缓存的增长对内存和时间效率的挑战主要表现在两个方面&#xff1a;一是…

【数据库初阶】SQL--DCL

文章目录 DCL1. 基本介绍2. 用户管理2.1 查询用户2.2 创建用户2.3 修改用户密码2.4 删除用户 3. 权限控制3.1 查询权限3.2 授予权限3.3 撤销权限 4. DCL总结 DCL 更多数据库MySQL系统内容就在以下专栏&#xff1a; 专栏链接&#xff1a;数据库MySQL 1. 基本介绍 DCL英文全称是…

推荐系统学习 二

双塔模型的结构 用户的特征&#xff0c;我们知道用户ID还能从用户填写的资料和用户行为中获取很多特征&#xff0c;包括离散特征和连续特征。所有这些特征不能直接输入神经网络&#xff0c;而是要先做一些处理&#xff0c;比如用embedding层把用户ID映射到一个向量 跟之前我们…