rapidocr-onnxruntime库及在open-webui上传PDF 图像处理 (使用 OCR)应用

news2024/11/15 0:00:39

背景

rapidocr-onnxruntime是一个跨平台的OCR库,基于ONNXRuntime推理框架。

 目前已知运行速度最快、支持最广,完全开源免费并支持离线快速部署的多平台多语言OCR。
 缘起:百度paddle工程化不是太好,为了方便大家在各种端上进行ocr推理,
            我们将它转换为onnx格式,使用Python/C++/Java/Swift/C# 将它移植到各个平台。
 名称来源: 轻快好省并智能。基于深度学习技术的OCR技术,主打人工智能优势及小模型,以速度为使命,效果为主导。

rapidocr-onnxruntime · PyPI

pip install rapidocr-onnxruntime

注:ONNXRuntime是微软推出的一款推理框架,用户可以非常便利的用其运行一个onnx模型。ONNXRuntime支持多种运行后端包括CPU,GPU,TensorRT,DML等。可以说ONNXRuntime是对ONNX模型最原生的支持。

1、单独离线部署RapidOcr,可以参考这个博客文档:
RapidOcr-Onnxruntime实现离线文字识别(依赖库) icon-default.png?t=N7T8https://www.52pojie.cn/thread-1834278-1-1.html

2、本文重点是阐述在本地大语言模型提供图形化界面的开源项目库Open WebUI 中PDF文件(使用OCR做图像处理)的应用。

open-webui上传PDF 图像处理 (使用 OCR)

在Open WebUI安装运行时,默认PDF文件是只支持转文本部分,不使用OCR做图像处理。 即下图中的该项功能是关闭状态。

在我们的实验中(linux环境,centos系统),我们尝试打开该项功能,即对于PDF中图像包含的文字,能够通过OCR识别软件做处理。

但是,当我们把上图开关启动(使用OCR)后, 在open-webui对话框上传PDF文件,会报如下错误:Something went wrong :/ `rapidocr-onnxruntime` package not found, please install it with `pip install rapidocr-onnxruntime`
查看了相关资料,解决过程如下:

1、直接运行安装命令:pip install rapidocr-onnxruntime

未能按照,给出如下提示,pip在‘root’权限下,不允许安装,建议虚拟环境安装。

WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

于是,参考pip虚拟环境设置: https://docs.python.org/3/tutorial/venv.html

成功运行,命令如下:

(open-webui) [root@master ~]# python -m venv tutorial-env
(open-webui) [root@master ~]# source tutorial-env/bin/activate
(tutorial-env) (open-webui) [root@master ~]# pip install rapidocr-onnxruntime

Installing collected packages: pyclipper, mpmath, flatbuffers, sympy, six, PyYAML, protobuf, Pillow, packaging, numpy, humanfriendly, Shapely, opencv-python, coloredlogs, onnxruntime, rapidocr-onnxruntime
Successfully installed Pillow-10.3.0 PyYAML-6.0.1 Shapely-2.0.4 coloredlogs-15.0.1 flatbuffers-24.3.25 humanfriendly-10.0 mpmath-1.3.0 numpy-2.0.0 onnxruntime-1.18.0 opencv-python-4.10.0.84 packaging-24.1 protobuf-5.27.1 pyclipper-1.3.0.post5 rapidocr-onnxruntime-1.3.22 six-1.16.0 sympy-1.12.1

虽然rapidocr安装成功了,重启open-webui服务,发现仍然无法上传pdf文件。 

查看资料并且单独在python环境测试导入rapidocr库,发现会报错:

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

(open-webui) [root@master backend]# python
Python 3.10.14 (main, May  6 2024, 19:42:50) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from rapidocr_onnxruntime import RapidOCR
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/root/miniconda3/envs/open-webui/lib/python3.10/site-packages/rapidocr_onnxruntime/__init__.py", line 4, in <module>
    from .main import RapidOCR
  File "/root/miniconda3/envs/open-webui/lib/python3.10/site-packages/rapidocr_onnxruntime/main.py", line 8, in <module>
    import cv2
  File "/root/miniconda3/envs/open-webui/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module>
    bootstrap()
  File "/root/miniconda3/envs/open-webui/lib/python3.10/site-packages/cv2/__init__.py", line 153, in bootstrap
    native_module = importlib.import_module("cv2")
  File "/root/miniconda3/envs/open-webui/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ImportError: libGL.so.1: cannot open shared object file: No such file or directory

解决方案:sudo yum install mesa-libGL

(open-webui) [root@master backend]# sudo yum install mesa-libGL

成功安装后。

再次启动运行webUI,可以正确上传解析PDF文件。

大概测试了一下, rapidocr库,对于pdf文本格式(印刷体)转换成文本的准确率较高(95%+),但是对于手写文字(来自几位医生),识别准确率稍差(约60%)。

参考资料:

bug: [RAG] v0.1.109 Breaks PDF upload #1069

Issue: Pypdf extract_image=True is not working on docker(production) #15576

[Windows] RapidOCR 1.3.0安装使用 

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

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

相关文章

计算机网络课程实训:局域网方案设计与实现(基于ensp)

文章目录 前言基本要求操作分公司1分公司2总部核心交换机配置实现内部服务器的搭建acl_deny部分用户与服务器出口出口防火墙配置 前言 本篇文章是小编实训部分内容&#xff0c;内容可能会有错误&#xff0c;另外ensp对电脑兼容性及其挑剔&#xff0c;在使用之前一定要安装好。…

第100+13步 ChatGPT学习:R实现决策树分类

基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言&#xff0c;不想学Python咯。 答曰&#xff1a;可&#xff01;用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了&#xff0c;就帮各位搬运一下吧。 二、R代码实现决策树分类 &#xff08;…

极客之夜 | XCTF国际网络攻防联赛十周年庆典圆满落幕

在数字化浪潮的推动下&#xff0c;网络安全已成为全球关注的焦点。十年磨一剑&#xff0c;XCTF国际网络攻防联赛以其卓越的赛事品质和深远的影响力&#xff0c;成为网络安全领域的一面旗帜。极客之夜&#xff0c;我们齐聚一堂&#xff0c;共同庆祝XCTF的十年辉煌&#xff0c;展…

andon系统及时通知对应处理人员,助力产线快速处理异常

在当今快节奏、高效率的制造业环境中&#xff0c;生产线的稳定运行和快速响应异常情况的能力对于企业的成功至关重要。Andon 系统作为一种先进的生产管理工具&#xff0c;凭借其及时通知对应处理人员的功能&#xff0c;为产线快速处理异常提供了强大的助力。 一、Andon系统组成…

基于springboot+Vue高校宿舍管理系统的设计与实现【附源码】

本科毕业设计&#xff08;论文&#xff09; 基于springbootVue高校宿舍管理系统的设计与实现 目录 摘要 2 第一章 绪论 2 1.1 开发背景 2 1.2 开发意义 2 第二章 系统分析 3 2.1 系统的需求分析 3 2.2 系统开发设计思想 3 2.3系统开发步骤 3 2.4 系统的主要技术 4 2.4.1 B/S系…

分享一个好用的图幅号计算器

如果在你的工作中会分幅处理地图数据&#xff0c;也许这个好用的图幅号计算器能对你有所帮助。 你只需要在该工具中输入经纬度坐标&#xff0c;就可以为你计算出各个比例尺下的图幅号&#xff0c;你可以在文末查看该工具的领取方法。 一个好用的图幅号计算器 该图幅计算器工…

3d渲染软件有哪些(1),渲染100邀请码1a12

3D渲染是把三维模型转成2D图像的过程&#xff0c;领域不同常用的软件也不一样&#xff0c;今天我们就简单介绍几个。 在介绍前我们先推荐一个设计人员常用到的工具&#xff0c;就是网渲平台渲染100&#xff0c;通过它设计师可以把本地渲染放到云端进行&#xff0c;价格也不贵&a…

全景vr交互微课视频开发让学习变得更加有趣、高效

在数字化教育的浪潮中&#xff0c;3D虚拟微课系统操作平台以其独特的魅力和创新的功能&#xff0c;成为吸引学生目光的焦点。这个平台不仅提供了引人入胜的画面和内容丰富的课件&#xff0c;更通过技术革新和制作方式的探索&#xff0c;将课程制作推向了一个全新的高度。 随着技…

基于流量特征DNS隐蔽信道分析方法总结

一、 概述 隐蔽信道是指允许进程以危害系统安全策略的方式传输倍息的通信通道。隐蔽信道在公开的信道掩盖下&#xff0c;采用特殊的编码方式&#xff0c;传输非法或私密的信息而不被人发现。其广泛存在于操作系统、网络系统和应用系统中。对网络信息系统的安全构成了严重威…

U盘数据恢复宝典:从原因到解决方案的全面指南

一、U盘数据恢复概述 在日常生活和工作中&#xff0c;U盘已成为我们不可或缺的数据存储工具。然而&#xff0c;随着数据量的不断增长和使用的频繁&#xff0c;U盘数据丢失的问题也日益突出。U盘数据恢复技术正是在这种背景下应运而生&#xff0c;它通过各种技术手段找回因误删…

妈耶!被夸爆的零售数据分析方案在这里

在竞争激烈的零售市场中&#xff0c;数据分析已成为企业决胜的关键。今天&#xff0c;就为大家揭秘一份备受赞誉的零售数据分析方案——奥威BI零售数据分析方案&#xff0c;它围绕“人、货、场、供、财”五大主题&#xff0c;助力企业精准决策&#xff0c;实现业务增长。 一、人…

从传统到智能:视频汇聚EasyCVR+AI视频监控如何助力仓储的智能化转型

随着物流行业的快速发展和市场竞争的加剧&#xff0c;仓储管理对于保证货物安全、提高运营效率显得尤为重要。传统的仓储监控方式已难以满足现代仓储管理的需求&#xff0c;因此&#xff0c;仓储视频智能监控解决方案应运而生。方案通过集成先进的视频监控技术、智能分析算法、…

【数据结构】栈的定义与实现(附完整运行代码)

目录 一、栈的定义 二、顺序栈 链栈比较 三、栈的实现&#xff08;顺序栈&#xff09; 3.1 ❥ 定义栈结构 3.2 ❥ 初始化 3.3 ❥ 销毁 3.4 ❥ 插入&#xff08;入栈&#xff09; 3.5 ❥ 删除 &#xff08;出栈&#xff09; 3.6 ❥ 获取栈顶元素 3.7 ❥ 判空 3.8 ❥…

Linux操作系统进程同步的几种方式及基本原理

1&#xff0c;进程同步的几种方式 1.1信号量 用于进程间传递信号的一个整数值。在信号量上只有三种操作可以进行&#xff1a;初始化&#xff0c;P操作和V操作&#xff0c;这三种操作都是原子操作。 P操作(递减操作)可以用于阻塞一个进程&#xff0c;V操作(增加操作)可以用于…

C++哈希表、哈希桶的实现以及模拟实现封装unordered_map 和 unordered_set 位图 布隆过滤器 哈希切割相关

文章目录 unordered系列关联式容器unordered_mapunordered_map的接口说明 unordered_setset 与 unordered_set的效率比较 底层结构哈希概念哈希冲突哈希函数常见哈希函数哈希冲突解决闭散列 —— 开放定址法哈希表的插入线性探测二次探测 哈希表的闭散列实现哈希表的结构插入代…

Redis报错:MISCONF Redis is configured to save RDB snapshots

错误提示内容&#xff1a; 2024-06-25 16:30:49 : Connection: Redis_Server > [runCommand] PING 2024-06-25 16:30:49 : Connection: Redis_Server > Response received : -MISCONF Redis is configured to save RDB snapshots, but it is currently not able to pers…

Java高级重点知识点-13-数据结构、List集合、List集合的子类

文章目录 数据结构List集合List的子类&#xff08;ArrayList集、LinkedList集&#xff09; 数据结构 栈 stack,又称堆栈&#xff0c;它是运算受限的线性表&#xff0c;其限制是仅允许在标的一端进行插入和删除操作&#xff0c;不允许在其他任何位置进行添加、查找、删除等操作…

Verilog描述一个带有异步置位和异步清零的D触发器

1 带有异步置位和异步清零的D触发器的真值表&#xff1a; 2 Verilog代码描述 module DFF_SR(CLK, D, Rd, Sd, Q, QN);input CLK, D, Rd, Sd;output Q, QN;reg Q_DFF;always (posedge CLKor negedge Rd or negedge Sd)beginif(!Rd)Q_DFF < 1b0;else if(!Sd)Q_DFF < 1b1;e…

问题:泡泡纱、市布属()织物。 #笔记#知识分享#职场发展

问题&#xff1a;泡泡纱、市布属&#xff08;&#xff09;织物。 A.纯棉 B.化纤 C.涤棉 D.纯麻 参考答案如图所示

APP软件系统的开发流程

APP软件系统的开发是一个复杂的过程&#xff0c;需要多方面的知识和技能。建议选择专业的开发团队进行开发&#xff0c;以确保APP的质量和成功。APP软件系统的开发流程通常包括以下几个阶段。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合…