admin管理员组

文章数量:1564179

背景

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实现离线文字识别(依赖库) https://www.52pojie/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/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安装使用 

本文标签: 图像处理上传Openrapidocronnxruntime