OpenCV与AI深度学习 | 高效开源的OCR工具:Surya-OCR介绍与使用

本文来源公众号“OpenCV与AI深度学习,仅用于学术分享,侵权删,干货满满。

原文链接:高效开源的OCR工具:Surya-OCR介绍与使用

1 背景

    在众多企业应用中,光学字符识别 (OCR) 是一项基础技术。在本文中,我们将深入探讨 Surya-OCR,这是最近引起广泛关注的解决方案。文本检测和提取在各种企业用例中至关重要。例如:

  •  在制造业中,从文档中提取发票详细信息至关重要。
  •  保险行业采用 OCR 技术来自动化索赔的数字化,而医疗保健应用程序则利用 OCR 从临床记录中提取药物信息。

2 Surya-OCR

    Surya 是一个文档 OCR 工具包,它具有以下功能:

  • 支持 90 多种语言的 OCR,其基准测试优于云服务
  • 任何语言的行级文本检测
  • 布局分析(表格、图像、标题等检测)
  • 读取顺序检测

    它适用于一系列文档(有关更多详细信息,请参阅用法和基准)。

github地址:

https://github.com/VikParuchuri/surya

安装与使用

    在安装 Surya 之前,必须确保满足两个先决条件:

  • 需要 Python 版本 3.9 或更高版本。
  • 系统上必须安装 PyTorch。

    如果您使用的是旧版本的python,可以使用以下命令更新python:

conda install python=3.9

    要安装最新版本的 torch,请访问以下页面并根据您的环境生成命令 - https://pytorch.org/get-started/locally/

    简而言之,如果您使用的是 CPU 机器,只需运行:

pip install -U torch

    如果是 GPU 机器,请确保安装带有 cuda 的 torch:

pip install torch torchvision torchaudio --index -url https: //d ownload.pytorch.org/whl/cu118

    接下来安装Surya-OCR:

pip install surya-ocr

    Surya 支持多种语言。要执行文本检测,让我们从维基百科页面选择一个图像。

    该图像由两列组成,还包括页眉和页脚注释。文本检测可以通过三个连续步骤完成。

    【1】加载图像——使用PIL库加载png文件

from PIL import Image
image = Image.open("test.png")
print(image)

    【2】加载Surya模型

from surya.model.segformer import load_model, load_processor
model, processor = load_model(), load_processor()

    首次执行该命令时,将从 HuggingFace 下载模型。对于后续执行,模型会被缓存并快速加载。

    【3】执行文本检测 — 使用 surya batch_inference 组件

from surya.detection import batch_inference
prediction = batch_inference([image], model, processor)
print(prediction)

    Python接口打印检测到的文本的边界框坐标:

    你可以使用以下命令查看热图和亲和力图:

prediction[0]["heatmap"]

代码:

prediction[0]["affinity_map"]

    也可以通过命令行实现文本检测:

surya_detect DATA_PATH --images

DATA_PATH可以是图像、pdf 或图像/pdf 文件夹

--images将保存页面图像和检测到的文本行(可选)

--max如果您不想处理所有内容,则指定要处理的最大页数

--results_dir指定保存结果的目录而不是默认目录

    Surya 已检测到几乎 99% 的正文。页脚被覆盖。但是,无法正确检测标头。

    Surya 可在 CPU 和 GPU 环境上无缝运行。在 GPU 环境中,Surya 会自动检测 GPU 并利用它,无需任何额外的设置。

3 结束语

    Surya 团队目前专注于开发多项功能,包括文本提取、标题检测和表格提取。

https://github.com/VikParuchuri/surya?tab=readme-ov-file#surya

    发布后,我们可以将结果与 EasyOCR 或 PaddleOCR 进行比较,以评估其性能。

    可以通过以下链接访问代码:

https://github.com/srinathmkce/TheAIGuy/blob/main/ComputerVision/OCR/Surya-OCR.ipynb

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

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

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

相关文章

qt for android 重新编译Qt6Android.jar

QT相关 编译Qt6Android.jarqt 6.7 WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES样式问题APP商店退回用户未点击《用户协议》就启动传感器 编译Qt6Android.jar qt版本&#xff1a;6.7 进入到Qt源码目录 <你的qt目录>\Src\qtbase\src\android\…

MySQL主从复制(二):高可用

正常情况下&#xff0c; 只要主库执行更新生成的所有binlog&#xff0c; 都可以传到备库并被正确地执行&#xff0c; 备库就能达到跟主库一致的状态&#xff0c; 这就是最终一致性。 但是&#xff0c; MySQL要提供高可用能力&#xff0c; 只有最终一致性是不够的。 双M结构的…

Golang:发起http请求-GET带参数、POST发送Form和JSON数据

文档 https://pkg.go.dev/net/httphttps://pkg.go.dev/net/url 目录 1、发起GET请求2、发起带参GET请求3、POST请求提交Form表单4、POST请求提交Json数据5、接收响应数据&#xff0c;json转为map6、自定义请求头 1、发起GET请求 使用net/http 可以很容易发起get请求 package…

python实现nacos服务注册和HTTP探活

如果使用nacos-sdk-python&#xff08;注意适用nacos版本&#xff09;&#xff0c;需要按照下面的链接修改源码的bug https://github.com/nacos-group/nacos-sdk-python/issues/135 代码如下&#xff1a; import nacos import threading import socket import requests impo…

大语言模型调优SFT RLHF

模型调优 大语言模型调优是通过准备训练数据&#xff0c;并在已有的预训练模型上进行调优&#xff0c;包括 llama、千问等模型&#xff0c;从而可以让模型学习到私有知识或者增强模型的已有知识。因此&#xff0c;如果要想训练一个效果好的模型&#xff0c;我们就需要提供大量…

【人工智能】模型性能评估

模型性能衡量介绍 混淆矩阵 混淆矩阵(Confusion Matrix&#xff09; TP(真阳性)&#xff1a;预测为阳性&#xff0c;且预测正确。 TN(真阴性)&#xff1a;预测为阴性&#xff0c;且预测正确。 FP(伪阳性)&#xff1a;预测为阳性&#xff0c;但预测错误&#xff0c;又称型一误…

json文件写操作-下文

接上文json文件写操作 2.4 控制函数长度代码规范版 #include <iostream> #include <string> #include "../3rd/cJSON/cJSON.h" #include "../test_memset/include/ArrayToZero.h"using namespace std;void AddLikeObject(cJSON* interest, c…

【NumPy】关于numpy.reshape()函数,看这一篇文章就够了

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

实时检测GPU使用率nvidia-smi

nvidia-smi --query-gpuutilization.gpu --formatcsv,noheader,nounits 为了判断所有 GPU 的利用率都小于阈值&#xff0c;可以循环检查每一个 GPU 的利用率。如果所有 GPU 的利用率都低于阈值&#xff0c;则增加空闲时间计数&#xff1b;否则&#xff0c;重置空闲时间计数。 …

python文件名通常以什么结尾

python文件后缀一般有两个&#xff0c;分别是.py和.pyw。视窗用 python.exe 运行 .py&#xff0c;用 pythonw.exe 运行 .pyw 。 这纯粹是因为安装视窗版Python时&#xff0c;扩展名 .py 自动被登记为用 python.exe 运行的文件&#xff0c;而 .pyw 则被登记为用 pythonw.exe 运…

信息系统项目管理师--八大绩效域-度量绩效域

信息系统工程师的八大绩效域包括&#xff1a;干系人、团队、开发方法和生命周期、规划、项目工作、交付、度量、不确定性。 度量绩效域涉及评估项目绩效和采取应对措施相关的活动和职能。 预期目标 对项目状况充分理解数据充分、可支持决策及时采取行动&#xff0c;确保项目最…

[程序员] 最近的感悟,错误处理占大头?

根据昨天分享的一个问题&#xff0c;想到的。 在代码里&#xff0c;异常处理的代码也算是占大头&#xff0c;扑面而来的就是发生错误时怎么处理的大片代码&#xff1b;而且出现问题的概率是绝对的占大头。所以&#xff0c;异常代码出现bug的概率也在不知不觉中增加&#xff01…

linux中使用yum下载对应软件包的离线安装包

方案一&#xff08;推荐&#xff09;&#xff1a;repotrack #安装yum-utils yum -y install yum-utils #下载 ansible 全量依赖包 -p 指定下载目录 -a 指定版本 repotrack -a x86_64 -p /tmp ansible 方法二&#xff1a;yumdownloader yumdownloader 命令在软件包 yum-utils…

LeetCode刷题之HOT100之汉明距离

大家晚上好啊&#xff0c;今天几乎啥也没干&#xff0c;上个课就耽误了一下午&#xff0c;晚上来了积极性也不高&#xff0c;先完成今天的题目吧&#xff0c;请看题&#xff1a; 1、题目描述 2、逻辑分析 没有遇到过这种题目&#xff0c;想不出来有什么解法&#xff0c;看题解…

【尚品汇】开发过程记录

Mybatis-Plus返回自增的主键Id OverrideTransactional(rollbackFor Exception.class)public void saveBaseAttrInfo(BaseAttrInfo baseAttrInfo) {//1&#xff0c;平台属性信息 判断是修改还是添加if(baseAttrInfo.getId() ! null){baseAttrInfoMapper.updateById(baseAttrInf…

跟TED演讲学英文:Do schools kill creativity by Sir Ken Robinson

Do schools kill creativity? Link: https://www.ted.com/talks/sir_ken_robinson_do_schools_kill_creativity Speaker: Sir Ken Robinson Date: February 2006 文章目录 Do schools kill creativity?IntroductionVocabularySummaryTranscriptAfterword Introduction Sir…

可转债日内自动T+0交易,行情推送+策略触发+交易接口

说明 目前这个项目已编译打包,下载即可测试,直接生成多平台可执行文件&#xff0c;详见运行方法。行情部分与策略弱相关&#xff0c;拆分解耦单独作为一个项目。行情项目请移步GitHub - freevolunteer/hangqing: A股行情订阅工具&#xff0c;支持股票/可转债level2/level2数据&…

【stm32/CubeMX、HAL库】嵌入式实验六:定时器(3)|外部脉冲计数

参考&#xff1a; 【【正点原子】手把手教你学STM32CubeIDE开发】 https://www.bilibili.com/video/BV1Wp42127Cx/?p13&share_sourcecopy_web&vd_source9332b8fc5ea8d349a54c3989f6189fd3 《嵌入式系统基础与实践》刘黎明等编著&#xff0c;第九章定时器&#xff0c…

ubuntu root密码遗忘的修改办法

在Ubuntu中&#xff0c;如果你需要进入恢复模式&#xff08;Recovery Mode&#xff09;来修改用户密码&#xff0c;可以按照以下步骤进行&#xff1a; 重启计算机&#xff1a; 重新启动你的Ubuntu系统&#xff0c;等待GRUB菜单出现。 进入恢复模式&#xff1a; 如果GRUB菜单没…

Generic Segmentation Offload(GSO)

Generic Segmentation Offload汉语意思是啥&#xff1f; Generic Segmentation Offload&#xff08;GSO&#xff09;的汉语意思是“通用分段卸载”。在网络通信中&#xff0c;GSO 是一种技术&#xff0c;用于在网络栈中将较大的传输单元分段为更小的单元&#xff0c;以提高网络…