Langchain从零开始到应用落地案例[AI智能助手]【3】---使用Paddle-OCR识别优化可识别图片进行解析回答

目录

前言

Paddle-OCR安装

关于什么是paddle-ocr这里详细的介绍一下

核心特点:

典型应用场景:

使用优势:

安装

代码编写

运行演示

问题原因和解决办法


前言

在上一篇章节,我们实现了基于文件来进行回答,不过还遗留了一些问题,那就是无法识别带有文字的图片,不过现在会在这篇篇章进行问题解决。

原因是markitdown的官网并没有写明白,mrkitdown并不具备含有ocr图片文件识别,但是标注了,ocr识别是基于模型是否能够支持图片输入进行回答,那就需要含有视觉的模型来支撑这个ocr,如果你的模型本身就是普通的聊天模型,那不好意思,识别不到。

OK,详情的话可以参考上一篇文章:https://blog.csdn.net/Aainm/article/details/153784250?spm=1001.2014.3001.5501

学习不易,为了之后章节连续学习,可以点点关注防止下次就找不到了,也可以订阅本专栏来获取实时更新和学习,如有问题可以私信,要源码参考的也是可以的啦,谢谢大家了。

那么开启本篇章的学习吧!!!!!

Paddle-OCR安装

官网:https://github.com/PaddlePaddle/PaddleOCR

关于什么是paddle-ocr这里详细的介绍一下

PaddleOCR 是百度飞桨(PaddlePaddle)推出的一款开源 OCR(Optical Character Recognition,光学字符识别)工具库,主要用于将图片、扫描件等视觉内容中的文字信息提取为可编辑的文本。

核心特点:

  1. 多语言支持:默认支持中文、英文、数字,还可扩展至日文、韩文、德文等 80+ 语言,覆盖常见场景的文字识别需求。
  2. 多场景适配:能处理印刷体(如文档、海报、车牌)、手写体(如笔记、签名)、表格、二维码等多种形式的文字内容。
  3. 高精度模型:基于深度学习技术,内置经过大规模数据训练的预训练模型,识别准确率在行业内处于较高水平(尤其对中文场景优化明显)。
  4. 轻量化部署:支持本地离线部署(无需联网),提供 Python API、C++ 接口等,可轻松集成到桌面应用、移动端或服务器端。
  5. 开源免费:代码和模型完全开源,允许商业使用,开发者可根据需求二次开发或优化模型。

典型应用场景:

  • 文档数字化(扫描件转文字、PDF 文字提取);
  • 证件识别(身份证、银行卡、营业执照等);
  • 场景文字识别(街景招牌、商品标签、快递单等);
  • 表格识别(Excel 表格内容提取);
  • 手写体识别(手写笔记、作业批改等)。

使用优势:

对于开发者而言,PaddleOCR 开箱即用,无需从零训练模型,通过简单的代码调用即可实现文字识别功能(如你之前改造的代码中,通过 PaddleOCR() 初始化后直接调用 ocr.ocr() 即可提取图片文本),且支持 CPU/GPU 加速,兼顾易用性和性能。

安装

需python3.10以上的环境

在控制台输入以下两条指令即可

bash 复制代码
# 安装 PaddlePaddle(核心框架,选 CPU 版即可本地运行)
pip install paddlepaddle==3.2.0

# 安装 PaddleOCR(包含预训练模型,支持中英文等多语言)
pip install paddleocr

代码编写

还是之前那个逻辑,原本的逻辑

python 复制代码
md = MarkItDown()
    file_path = "C:\\Users\\a\Desktop\\AgentTestworddemo.txt"
    res = md.convert(file_path)
    text = res.text_content

    # 修改此处:对系统提示中的大括号进行转义
    prompt = ChatPromptTemplate.from_messages(
        [
            ("system",
             f"用户上传文件的内容{text}\n\n你是一个问答助手,用户和你进行对话,你先基于用户上传文件的内容查询回答,如果没有需要根据用户问题给出一个回答。".replace(
                 "{", "{{").replace("}", "}}")),
            ("human", "{question}"),
        ]
    )
    chat = prompt | llm

    question = input("请输入问题:")
    response = chat.invoke({"question": question})
    print(response.content)

我们还是一样的思路,不过编写的是Paddle-OCR的端口

代码参考

python 复制代码
"""用paddleocr识别图片中的文本(支持中英文,多语言)"""
    OCR = PaddleOCR(lang="ch",use_angle_clas=True,use_gpu=False,show_log=False)
    image_path = "D:\\pychram\\test_ocr.png"
    res = OCR.ocr(image_path,cls= True)
    #提取识别文字(按顺序拼接)
    text = ""
    for line in res:
        if line is not None:
            for word_info in line:
                text += word_info[1][0] + "\n"  #word_info[1][0]为识别文字

    text.strip() #去除首位空行

    ocr_text = text

    prompt = ChatPromptTemplate.from_messages(
        [
            ("system",
             f"用户上传文件内容{ocr_text}\n\n你是一个问答助手,用户和你进行对话,你需要基于用户上传文件内容查询回答,如果没有需要根据用户问题给出一个回答。".replace(
                 "{", "{{").replace("}", "}}")),
            ("human", "{question}"),
        ]
    )

    chat = prompt | llm

    # 开始聊天
    question = input("请输入问题:")
    response = chat.invoke({"question": question})
    print(response.content)

可以不难发现,大体的逻辑都是能实现的

运行演示

不出意外,你应该会和我一样

报错了,别担心,接下来会告诉原因,和解决办法。

问题原因和解决办法

原因呢,很简单,Langchain最新版本不支持旧版的"langchain.docstore"模块了,但是paddle-ocr还是要查询这个模块调用,后续应该会更新,不过目前应该没有办法去解决

那么解决办法就很简单,就是降版本。

那么思路就很清晰

卸载当前的Langchain,我知道舍不得,但是同志们,没办法,这种事情会哼常见的。

bash 复制代码
pip uninstall langchain langchain-core -y

然后下载一个长期稳定的使用的旧版本

bash 复制代码
pip install langchain==0.2.14 langchain-core==0.2.34

那么到这里,基本上就能完成了,在重新运行,这里就不放演示了,因为我还没解决,你们自己尝试一下,万一还有其他的方法,我也想学习,嘿嘿。

相关推荐
周杰伦_Jay3 小时前
【 RocketMQ 全解析】分布式消息队列的架构、消息转发与快速实践、事务消息
分布式·算法·架构·rocketmq·1024程序员节
IT_陈寒3 小时前
Vue 3.4性能优化实战:5个鲜为人知的Composition API技巧让打包体积减少40%
前端·人工智能·后端
数据与人工智能律师3 小时前
数据淘金时代的法治罗盘:合法收集、使用与变现数据的边界与智慧
大数据·网络·人工智能·云计算·区块链
互联网中的一颗神经元3 小时前
小白python入门 - 9. Python 列表2 ——从基础操作到高级应用
java·开发语言·python
王哈哈^_^3 小时前
【数据集】【YOLO】【目标检测】建筑垃圾数据集 4256 张,YOLO建筑垃圾识别算法实战训推教程。
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·数据集
路漫漫其修远兮sjw3 小时前
llamafactory拉取并启动(本地虚拟机)
docker·模型微调·1024程序员节·模型调用
it&s me3 小时前
EulerOS(NPU)安装llamafactory
ai·1024程序员节·llamafactory
大龄Python青年3 小时前
Linux发行版Ubuntu24.04安装教程
linux·ubuntu·1024程序员节
落798.3 小时前
【在昇腾NPU上部署Llama-2-7B:从环境配置到性能测试的完整实战】
经验分享·llama·1024程序员节