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


    背景

    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

    成功运行,命令如下:

    1. (open-webui) [root@master ~]# python -m venv tutorial-env
    2. (open-webui) [root@master ~]# source tutorial-env/bin/activate
    3. (tutorial-env) (open-webui) [root@master ~]# pip install rapidocr-onnxruntime
    4. Installing collected packages: pyclipper, mpmath, flatbuffers, sympy, six, PyYAML, protobuf, Pillow, packaging, numpy, humanfriendly, Shapely, opencv-python, coloredlogs, onnxruntime, rapidocr-onnxruntime
    5. 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

    1. (open-webui) [root@master backend]# python
    2. Python 3.10.14 (main, May  6 2024, 19:42:50) [GCC 11.2.0] on linux
    3. Type "help", "copyright", "credits" or "license" for more information.
    4. >>> from rapidocr_onnxruntime import RapidOCR
    5. Traceback (most recent call last):
    6.   File "", line 1, in
    7.   File "/root/miniconda3/envs/open-webui/lib/python3.10/site-packages/rapidocr_onnxruntime/__init__.py", line 4, in
    8.     from .main import RapidOCR
    9.   File "/root/miniconda3/envs/open-webui/lib/python3.10/site-packages/rapidocr_onnxruntime/main.py", line 8, in
    10.     import cv2
    11.   File "/root/miniconda3/envs/open-webui/lib/python3.10/site-packages/cv2/__init__.py", line 181, in
    12.     bootstrap()
    13.   File "/root/miniconda3/envs/open-webui/lib/python3.10/site-packages/cv2/__init__.py", line 153, in bootstrap
    14.     native_module = importlib.import_module("cv2")
    15.   File "/root/miniconda3/envs/open-webui/lib/python3.10/importlib/__init__.py", line 126, in import_module
    16.     return _bootstrap._gcd_import(name[level:], package, level)
    17. 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安装使用 

  • 相关阅读:
    MATLAB | 全网唯一,双变量及三变量映射图表的MATLAB绘制
    CentOS6.6下安装git 2.6.2
    Devart dotConnect ADO.NET Data Providers Crack
    web前端课程设计——重庆旅游7页 HTML+CSS+JavaScript
    SpringMVC简介
    【数字IC基础】状态机FSM( Finite State Machine)
    7-4 BCD解密 (10分)
    关于 SAP Spartacus SSR 请求 OCC API 遇到 403 错误的解决办法
    c# 项目重构,创建新的解决方案
    Flink SQL-连接器
  • 原文地址:https://blog.csdn.net/weixin_42458975/article/details/139962506