首页 > 其他分享 >【针对unstructured的pdf提取的hi_res策略不能够连接huggingface.co下载模型的问题而选择进行的本地化模型推理部署的方法】

【针对unstructured的pdf提取的hi_res策略不能够连接huggingface.co下载模型的问题而选择进行的本地化模型推理部署的方法】

时间:2024-07-05 10:55:17浏览次数:22  
标签:co res 模型 unstructured hi install detectron2

unstructured pdf hi_res策略本地推理部署说明

unstructured pdf的hi_res策略如果选用detectron2时有些问题需要关注, detectron2自从2021年到现在很久没有更新。使用如新的python3.12及最新的torch2.3.1去编译源码安装会报错torch找不到的问题导致源码编译安装失败。根据要使用的detectron2及pytorch等需应用的包,综合考量选择首先构建一个虚拟python3.9,版本环境(推荐python3.9而不是其它,不能使用python3.7因此之后使用过程中会用到importlib.metadata但其在python3.8之后才有)以方便安装detectron2及其依赖等。这里的虚拟python环境使用miniconda。

python3.9虚拟环境准备

安装miniconda

miniconda官网

输入如下命令:

$ mkdir -p ~/miniconda3
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
$ bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
$ rm -rf ~/miniconda3/miniconda.sh
$ ~/miniconda3/bin/conda init bash

创建一个conda-env环境

$ conda create --name conda-py39-env python=3.9
$ conda activate conda-py39-env

安装unstructured

背景知识

  • unstructured inference
  • 如下安装过程中会自动下载pytorch的高版本v2.3.1并耗费较长时间。但如果使用hi_res的detectron2,其依赖于较低版本的pytorch,在下面安装detectron2时会介绍。

安装步骤

依次命令行键入如下指令:

$ pip install unstructured
$ pip install unstructured[pdf,local-inference]
$ sudo apt install libmagic-dev
$ pip install poppler-utils
$ sudo apt install tesseract-ocr
$ sudo apt install libtesseract-dev pandoc
$ pip install psutil

安装detectron2

背景知识

  • detectron2自从2021年到现在很久没有更新,高版本python如3.12不太兼容,推荐基于python3.9
  • detectron2安装方法
  • detectron2要求pytorch>=1.8, python>=3.7
  • [torchvision开源代码](https://github.com/pytorch/vision/)中会给出torch, torchvision与python的版本搭配
  • pytorch旧版本要求 链接中找到pytorch 1.10.1版本的安装命令,使用CUDA11.1

安装detectron2及其依赖torch,torchvision和torchaudio

综上,最终决定选用python=3.9, torch=1.10.1, torchvision=0.11.2, cuda=11.1,键入命令如下:

$ pip install torch==1.10.1+cu111 torchvision==0.11.2+cu111 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
$ python -m pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu111/torch1.10/index.html

部署模型

背景知识

  • 使用unstructured的hi_res策略来解析PDF会使用深度学习模型识别文档布局并使用图像识别来提取表格结构信息,会使用多种模型。应用到的模型有:
    • yolox或detectron2等文档布局识别模型;
    • microsoft/table-transformer的模型来识做表格检测、表格结构识别(row,column,不同cell)等以及表格功能性分析(如判别列标题单元格,行标题单元格等);
    • timm的resnet18模型。
  • unstructured的hi_res支持的模型
  • 模型部署在本地来进行本地推理,此种方式需要手动去huggingface.co下载三类模型后将模型放置在代码所在目录。
  • 截止当前unstuctured版本,本地部署timm的resnet18与layout model和microsoft的table transformer model稍不同,其代码不能自动识别本地下载的模型,需要更改unstructured源码以令其正确本地加载模型,下面会介绍。

hi_res策略三种模型本地推理部署

layout model(detectron2及yolox)模型本地推理部署

在代码工作目录新建文件夹:unstructuredio/yolo_x_layout和unstructuredio/detectron2_faster_rcnn_R_50_FPN_3x以存放hi_res的layout解析模型,
huggingface中hi_res模型下载地址下载至少包含yolox及detectron2的两种模型:

  • unstructuredio/yolo_x_layout/yolox_l0.05.onnx
  • unstructuredio/detectron2_faster_rcnn_R_50_FPN_3x/model.onnx

或更多其它基于yolo与detectron2的模型。对于基于detectron2的布局解析模型,可在layout parser model zoo里进行选择Layout Detection Models,这里可以乎略,继续向下看。

microsoft的table-transformer模型本地推理部署

在代码工作目录新建文件夹:microsoft/table-transformer-structure-recognition/,并从huggingface中table-transformer配置下载地址下载。

timm/resnet18.a1_in1k的模型本地推理部署

timm/resnet18.a1_in1k模型下载下载所有内容,并人工将miniconda3/envs/conda-py39-env/lib/python3.9/site-packages/timm/models/_builder.py的line159添加:

load_from="file"
pretrained_loc += "/pytorch_model.bin"

总结

按上述步骤实践之后就可以正常进行local inference了,如上内容全基于发布文章时的条件,大体重点情况如下:

  • unstructured=0.14.9
  • unstructured-inference=0.7.36
  • torch=1.10,1+cu111
  • torchvision=0.11.2+cu111
  • torchaudio=0.10.1+cu111
  • detectron2=0.6+cu111

有任何问题请详细查看相关官方文档及自行参考unstructured源码。

标签:co,res,模型,unstructured,hi,install,detectron2
From: https://blog.csdn.net/phillihp/article/details/140200102

相关文章

  • BACON: Supercharge Your VLM with Bag-of-Concept Graph to Mitigate Hallucinations
    目录概BACON代码[YangZ.,FengR.,etal.BACON:Superchargeyourvlmwithbag-of-conceptgraphtomitigatehallucinations.2024.]概本文提出了一种新的数据格式:BACON(BAg-of-Conceptgraph).BACONBACON希望将一个图片转换为\(G=(D,O,R,B)\)的数据格式......
  • .NET Core 和 .NET 标准类库项目类型有什么区别?
    在VisualStudio中,至少可以创建三种不同类型的类库:类库(.NETFramework)类库(.NET标准)类库(.NETCore)虽然第一种是我们多年来一直在使用的,但一直感到困惑的一个主要问题是何时使用.NETStandard和.NETCore类库类型。那么,类库(.NETStandard)和类库(.NETCore)之间有什么......
  • ESP32驱动TTP224触摸模块控制RGB灯亮灭---MircoPthon
    本文将指导读者如何使用Python编程ESP32微控制器,结合TT224触摸模块,实现对RGBLED灯的智能控制。通过详细的步骤和代码示例,读者可以快速搭建起自己的智能RGB灯控制系统。1.引言ESP32是由乐鑫科技(EspressifSystems)开发的一种为控制器,它具有以下主要特性:       ......
  • 如何使用信而泰测试仪构建802.1CB测试模型
    一、802.1CB概述为了减少由于链路和节点失效对网络造成的影响,通过在网络中设置冗余链路和并行传输冗余消息来提高网络的可靠性。IEEE802.1CB协议作为TSN协议族的一个子协议,定义了实现冗余传输的方案,即帧复制和帧消除机制(framereplicationandeliminationforreliability(......
  • 结合ArcGIS+SWAT模型+Century模型:流域生态系统水-碳-氮耦合过程模拟教程
    原文链接:结合ArcGIS+SWAT模型+Century模型:流域生态系统水-碳-氮耦合过程模拟教程https://mp.weixin.qq.com/s?__biz=MzUzNTczMDMxMg==&mid=2247608293&idx=1&sn=89a9107a2826d99985f9f1db448751ee&chksm=fa826602cdf5ef14a4d3df00b7e7dac464252a4e37a2b2cb52d07725562b4c9aef56......
  • SWAT模型全套教程
    SWAT模型全套教程https://mp.weixin.qq.com/s?__biz=MzUzNTczMDMxMg==&mid=2247607904&idx=3&sn=ead0faca7f5fc35585f9cfa214ce03ef&chksm=fa826787cdf5ee917c64f518225b29c75bc1c5276b94ef2e6aeeede6a85c718d7b8007b51e11&token=1917568310&lang=zh_CN#rd......
  • 标准化(Z-score)
    标准化(Z-score)是用于将不同微生物的丰度数据进行标准化处理,以便在热图中更容易比较和解释不同样本之间的差异。具体来说,标准化的过程如下:abundance<-scale(abundance,center=TRUE,#减去均值scale=TRUE#除以标准差)标准化过程详解:减去均值(center=TRU......
  • 技术思考:小米宣布在手机跑通 13 亿参数大模型,这意味着什么?
    雷军在2023年度演讲中对小米AI布局的主要内容总结:1、AI赋能软硬件:小米计划通过AI技术增强其软件和硬件的能力,雷军认为AI在小米的技术研发中起着关键作用。2.、持续布局:自2016年7月建立AI视觉团队以来,小米一直在AI领域有计划地扩展,今年4月还建立了大模型团......
  • China.NETConf2019 - 用ASP.NETCore构建可检测的高可用服务
    一、前言2019中国.NET开发者峰会(.NETConfChina2019)于2019年11月10日完美谢幕,校宝在线作为星牌赞助给予了峰会大力支持,我和项斌等一行十位同事以讲师、志愿者的身份公司参与到峰会的支持工作中,我自己很荣幸能够作为讲师与大家交流,分享了主题《用ASP.NETCore构建可检测的高......
  • R语言绘制临床基线表(Table1三线表)-compareGroups包
    compareGroupsR包是一个比较常用的用于绘制临床基线表的R包。开发者对它的功能定义主要侧重于绘制描述性表格,可以显示多个变量的平均值、标准差、分位数或频率,以及运用统计学方法计算各组之间的P值。今天就跟着github上的资料和网上各路大神的教程过一遍这个R包。参考资料......