马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
配景
在利用大模子处理册本 PDF 时,偶然你会碰到扫描版 PDF,也就是说每一页实在是图像情势。这时,大模子必要先从图片中提取文本,而这就必要借助 OCR(光学字符辨认)技术。
像 Gemini 2.5 如许的强盛模子,具备非常强的从图片中提取文本的本领。现实上,我们完全可以利用它来实行 OCR 任务。
利用如许的大模子举行 OCR,不但能处理复杂的图像场景,还能明白文本的布局,保存格式,并准确处理表格、标题等内容,为后续的文天职析、自动化处理和智能搜刮提供强盛的支持。这种联合 OCR 和 NLP 的智能文档处理方式,正在成为办理现实标题的强盛工具。
然而,像 Gemini 如许的强盛模子只能通过长途访问,且存在 API 受限和高本钱的标题。那么,是否有大概在当地摆设类似的大模子来完成这一任务呢?
固然当地摆设或直接安装已经有许多方案,后期文章中我们也将逐一比力。但我们更想本技艺撸一个,想着未来大模子不停升级之中我们也能紧随厥后直接升级是不**。**
大模子先容
首先,我们去 Hugging Face 找找具有这种本事的大模子。
所在:https://huggingface.co/models?pipeline_tag=image-text-to-text&sort=trending&search=qwen
看到 Image-Text-to-Text 没有,它表现模子可以大概处理图像和文本输入,符合我们的任务要求。点击进去,首先看到的是一批新发布的模子,我们筛选Qwen模子,找到指定版本模子:https://huggingface.co/Qwen/Qwen2.5-VL-3B-Instruct
选这个模子的告急缘故原由是参数数量少,设置要求低,可以在云端摆设,也可以在当地条记本上运行。我就先摆设到Google Colab上运行试下,没标题可以摆设在本机环境,对外发布举行调用。
原理分析
本项目的任务明白如下:实现一个当地摆设的多模态大语言模子,如 Qwen2.5-VL,用于从 PDF 文件中提取笔墨内容并完成 OCR 任务,最好保存表格情势,并将其转换为 Markdown 文档。模子是可选的,只需调整参数即可切换到其他模子。只管这个功能看似简单,但它为后续更复杂任务奠基了底子。
我们利用两款电脑来测试:Macbook Air M3 处理器,16G 内存;Ubuntu,V100 32G 显存。
用到的库
该项目告急涉及三部门,即 Transformers, vLLM 以及具体的大模子如 QWen2.5-VL。这个模子是基于 Transformer 架构开发的多模态模子。具体通过 Hugging Face 的 Transformers 库来加载和利用它,并选择利用 vLLM 来优化 Qwen2.5-VL 模子的推理性能。思量到后期大概会现实摆设到高性能电脑上,因此选择 vLLM,而不是 Ollama。
Transformers, vLLM 以及 QWen2.5-VL 之间的关系如下图所示。
这个关系图展示了三者之间的依靠和协作,具体如下,
- Transformers 是底子框架:QWen2.5-VL 的代码和模子布局依靠于 Hugging Face Transformers 库。开发者和用户必要安装最新版本的 Transformers 来加载和运行 QWen2.5-VL。
- vLLM 是推理优化引擎:vLLM 增强了 QWen2.5-VL 的推理性能,尤其是在处理视觉和视频任务时。它通过张量并行、动态内存管理等技术,使 QWen2.5-VL 可以大概在生产环境中高效运行。vLLM 必要与 Transformers 共同利用,并确保版本兼容(比方,某些版本的 Transformers 大概必要从源代码安装)。
- QWen2.5-VL 是应用模子:它是具体的多模态模子,利用 Transformers 提供的架构和 vLLM 的推理优化来实现其功能。换句话说,QWen2.5-VL 的筹划目的是处理复杂的视觉语言任务,而 Transformers 和 vLLM 则是其技术支撑。
步伐流程
步伐流程以及几个告急 Python 文件之间的关系如下图所示。
这个步伐的告急功能是将 PDF 文件转换为 Markdown 格式,整个流程可以总结如下:
1、下令行参数分析:通过 cli.py 中的 parse_args 函数分析用户输入的下令行参数;告急参数包罗:PDF 文件路径、模子路径、输出文件路径等。
2、初始化处理器:在 main.py 中初始化 PDFMarkdownProcessor 处理器;该处理器是整个转换过程的核心控制器。
3、PDF 处理阶段:加载指定的 PDF 文件;利用 PDFToImageConverter 将 PDF 文件转换为图像序列,图像分辨率默以为 1024 宽。
4、模子初始化:加载指定的视觉语言模子(如 Qwen2.5-VL-3B-Instruct);该模子必要提前下载到当地指定目次。
5、图像处理与转换:对每个 PDF 页面天生的图像举行处理;利用 ImageToMarkdownConverter 将图像内容转换为 Markdown 文本;这一步利用视觉语言模子辨认图像中的文本、表格、图片等内容。
6、效果整合与输出:归并全部页面转换得到的 Markdown 内容;将终极的 Markdown 文本生存到指定的输出文件中。
整个流程体现了模块化筹划头脑,各个组件职责明白,便于维护和扩展。用户只需通过简单的下令行参数即可完成从 PDF 到 Markdown 的转换过程。
模子下载
可以通过下令 huggingface-cli download 来下载 Qwen2.5-VL
- ! huggingface-cli download --resume-download --local-dir-use-symlinks False Qwen/Qwen2.5-VL-3B-Instruct --local-dir /content/samole_data/local_models/Qwen2.5-VL-3B-Instruct
复制代码 但假如 huggingface 不方便利用,可以选择用 modelscope。
比如我们要利用的这个模子文件放在这里:https://modelscope.cn/models/Qwen/Qwen2.5-VL-3B-Instruct/files
先安装 modelscope:
然后用以下下令
- ! modelscope download --model Qwen/Qwen2.5-VL-3B-Instruct --local_dir /content/samole_data/local_models/Qwen2.5-VL-3B-Instruct
复制代码 将完备模子库文件下载到Google Colab的当地目次 /content/samole_data/local_models/Qwen2.5-VL-3B-Instruct 中。
转化效果
利用的GPU是T4,对于 1024 分辨率的图像,转化一页必要三、四分钟,固然有点久,但至少也能跑起来了。
- ! python /content/pdf2md/main.py --pdf /content/pdf2md/test_ocr.pdf --model /content/samole_data/local_models/Qwen2.5-VL-3B-Instruct --output output.md
复制代码
假如页面较清楚,可以低落分辨率,那样自然会进步转化服从。另外,步伐中有个参数 quantization=None 表明没有启用量化,保持了模子的完备精度。假如想进一步进步服从,可以利用量化版本,即 Qwen/Qwen2.5-VL-3B-Instruct-AWQ。
从 PDF 文件中提取的图像转化为 Markdown 后,效果如下图所示。是不是笔墨、表格和数学公式都还保持的不错。
参考文献
- https://huggingface.co/Qwen/Qwen2.5-VL-3B-Instruct/tree/main
- https://blog.csdn.net/weixin_43196262/article/details/135268100
- 呆板学习与数学
- https://github.com/mathinml/pdf2md
3bd33c45f53d5e9f7ee53&sharer_shareinfo_first=e1f941a6f6c3bd33c45f53d5e9f7ee53#rd)
- https://github.com/mathinml/pdf2md
|