当前位置: 首页 > news >正文

使用LangChain与多模态模型实现图像中的文字和表格提取(PDF可转图片)

引言

在实际工程应用中,经常需要处理含有工程检验标准、施工图纸等复杂内容的PDF文档。这些文档往往包含大量水印、背景图层或无关信息,直接使用OCR识别容易引入噪声,影响后续的信息处理与分析。

为了解决这一问题,我尝试通过网页版Qwen进行测试,发现其对图像中的文字和表格具有较好的识别能力,并能有效忽略水印等干扰内容。在此基础上,我基于Ollama框架搭建多模态大模型环境,结合LangChain架构实现提示词工程,最终将提取的内容以Markdown格式输出,并转换为Word文档,满足了工程需求。

本文将详细介绍整个项目的实现流程,并提供完整的Python代码示例,适用于希望利用多模态大模型进行图像内容提取的开发者和工程师参考。

一、项目背景

在工程领域,很多技术文档是以扫描件或图片形式存在的,例如:

  • 工程验收标准表
  • 施工图纸说明
  • 检测报告模板
  • 设备参数铭牌

这类文档通常无法直接复制文本,传统做法是使用OCR工具如Tesseract、百度AI等进行识别,但效果受限于图像质量、字体样式以及排版复杂度。

本项目的目标是:从一张含工程检验标准的图片中提取文字和表格,并以Markdown格式输出,便于后续编辑、展示或转换为其他文档格式(如Word)。

主要步骤包括:

  1. 配置多模态模型服务
  2. 图像预处理与加载
  3. 构建符合任务目标的提示词
  4. 多模态模型推理与结果流式输出
  5. 结果验证与格式转换建议

二、环境准备

为了顺利运行该项目,请确保你的开发环境中已安装以下依赖库和组件:

1. 安装必要的Python包

pip install langchain openai pillow

注意:虽然我们使用的是自定义API服务,但ChatOpenAI类仍然可以兼容本地部署的多模态模型接口。

2. 获取多模态模型服务地址和密钥

你需要一个支持图像输入的多模态大模型服务,例如本地部署的Qwen-VL系列模型,或其他支持图像理解的LLM服务。

示例配置如下:

mllm = ChatOpenAI(openai_api_key="sk-RJaJE4fXaktHAI2MB295F6Ad58004f7eBcE255B863CdD6F0",openai_api_base="http://182.140.215.20:6542/v1/",model_name="qwen2.5vl:32b",temperature=0.3,max_tokens=2000
)

请根据实际部署情况替换上述URL和密钥。

三、核心代码说明(Demo)

1. 构建多模态模型调用对象

使用ChatOpenAI类来调用远程或本地部署的多模态模型接口,设置相关参数如API密钥、模型名称、最大输出长度等。

from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessagemllm = ChatOpenAI(openai_api_key="sk-RJaJE4fXaktHAI2MB296Ad58004f7eBcE255B863CdD6F0",openai_api_base="http://189.143.210.20:6532/v1/",model_name="qwen2.5vl:32b",temperature=0.3,max_tokens=2000
)

2. 提示词构建函数(支持图像输入)

定义系统提示词,确保模型只提取图像中的文字和表格,并翻译英文内容为中文,输出为Markdown格式。

system_prompt = """你是一个图片内容提取助手,请根据用户指令提取图片中的内容。整个过程需要严格保持以下要求:如果是英文内容必须翻译成中文。输出结果必须是中文和markdown格式。"""def load_image(image_path):"""优化图像预处理

相关文章:

  • Vue 项目中 Sass 与 Less 的对比
  • docker 网络-用户定义网络
  • Vue内置指令与自定义指令
  • 深入理解SQLMesh中的Lookback、Forward-Only和Auto-Restatement特性
  • IBM DB2和MYSQL在安全性、稳定性等方面的差异
  • linux中基础IO(上)
  • 【halcon】像素维度:插值算法对图片的影响
  • linux打印项目文件夹结构的命令
  • 【机器学习基础】机器学习入门核心算法:朴素贝叶斯(Naive Bayes)
  • [CARLA系列--03]如何打包生成CARLA 0.9.15的非编辑版(地图的加载与卸载)
  • Docker-compose 编排lnmp(dockerfile) 完成Wordpress
  • 【AI学习笔记】Coze平台实现生成小红书热门多图笔记
  • 【Pandas】pandas DataFrame drop
  • 九、【前后端联调篇】Vue3 + Axios 异步通信实战
  • 探索C++标准模板库(STL):String接口实践+底层的模拟实现(中篇)
  • GitHub 趋势日报 (2025年05月27日)
  • Linux中基础IO(下)
  • Flink CEP实践总结:使用方法、常见报错、优化与难点应对
  • 【Redis】基本架构
  • java导入excel
  • 企业网站优化是什么/广告网站留电话不用验证码
  • 苏州网站建设方法/大量微信群推广代发广告
  • 做网站工作怀孕/网络科技公司骗了我36800
  • 网站管理的内容包括/seo优化流程
  • 哪个网站可以接工程做/抖音seo推广外包公司好做吗
  • 兰州新区网站建设/sem推广和seo的区别