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,一经查实,立即删除!

相关文章

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

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

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

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

大语言模型调优SFT RLHF

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

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

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

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

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

python文件名通常以什么结尾

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

LeetCode刷题之HOT100之汉明距离

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

跟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交易,行情推送+策略触发+交易接口

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

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

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

Generic Segmentation Offload(GSO)

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

文心智能体应用示例:职场反PUA专家的诞生

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

C#编程-.NET Framework使用工具类简化对象之间的属性复制和操作

在C#编程中,对象之间的属性复制和操作是一个常见的需求。为此,.NET Framework提供了多种实用工具库,如AutoMapper、ValueInjecter和ExpressMapper。这些库通过简化代码,提高了开发效率。本文将介绍这些工具库,比较它们…

远程桌面连接不上远程服务器,如何有效的解决远程桌面连接不上远程服务器的问题

在解决远程桌面连接不上远程服务器的问题时,我们需要采取一种专业且系统的方法来排查和修复可能存在的故障。以下是一些建议和步骤,帮助用户更有效地解决此类问题。 首先,用户需要确认远程服务器的状态和网络连接是否正常。 这包括检查服务器…

Linux入门攻坚——23、DNS和BIND基础入门2

前一篇实践了正向解析服务器的配置使用,如何配置反向解析呢? 反向区域: 区域名称:网络地址反写.in-addr.arpa. 192.168.138. --> 138.168.192.in-addr.arpa. (1)定义区域: zone "ZONE_NAME" I…

必应bing国内广告如何开户,这篇文章告诉你!

搜索引擎广告推广已成为企业提升品牌知名度、吸引潜在客户的重要渠道,微软必应Bing,作为全球领先的搜索引擎之一,其广告平台为企业提供了一个高效、精准的推广渠道。如何在必应Bing国内广告平台上开户,让你的品牌大放异彩呢&#…

java项目之人事系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的人事系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于vue的人事系统的主要使用者…

【Spring】spring入门程序

案例要求:创建一个 Studentservice 类,其中需要使用 studentDao 接口的保存方法,来存储一个Student 类的对象,StudentDao 接口有两个不同的实现类,通过 Spring 的方式,为 Student类创建对象并为属性赋值&am…

若依微服务整合knife4j

在Spring Cloud的微服务架构下&#xff0c;每个微服务并不需要引入前端的ui资源&#xff0c;因此在每个微服务的Spring Boot项目下&#xff0c;引入ruoyi-common-swagger提供的starter即可。 1、在ruoyi-gateway网关模块下&#xff0c;把knife4j依赖资源引入 <!-- knife4j…

【设计模式深度剖析】【A】【创建型】【对比】| 工厂模式重点理解产品族的概念

回 顾&#xff1a;创建型设计模式 1.单例模式&#x1f448;️ 2.工厂方法模式&#x1f448;️ 3.抽象工厂模式&#x1f448;️ 4.建造者模式&#x1f448;️ 5.原型模式&#x1f448;️ &#x1f448;️上一篇:原型模式 | &#x1f449;️下一篇:代理模式 目录…