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

Langchain从零开始到应用落地案例[AI智能助手]【4】---优化ocr识别编写,实现按文件类型进行调用识别

目录

前言

pytesseract-OCR

整合ocr创建工具函数模块

示例代码参考

结束语


前言

在之前的篇章出现了,不支持ocr,或者模型还不支持最新版的Langchain框架,所以我找了个新的开源ocr识别模型,仅支持图片识别,结合Markitdown基本能完成对基本文件的识别操作。

然后本篇章主要是对ocr做统筹优化,进行文件的区分,实现对文件上传的识别和操作。然后实现上下文对话。

pytesseract-OCR

这个专门用于图片识别的轻巧ocr工具,目前我个人测试的,准确率应该是有95%左右的

Tesseract OCR 引擎(底层识别工具)和 pytesseract(Python 调用接口)

ocr引擎网址:https://github.com/UB-Mannheim/tesseract/wiki

关于新版的缺少add to path和中文语言环境包

找到系统变量新建添加文件夹路径就好了

win+r然后输入该指令

sysdm.cpl

然后找到高级,点击环境变量

在环境变量添加就ok了

安装依赖

# 安装 pytesseract(Python调用接口)和 pillow(图片处理) 
pip install pytesseract pillow

参考代码

import pytesseract
from PIL import Imagepytesseract.pytesseract.tesseract_cmd = r'D:\workfile\Tesseract-ocr\tesseract.exe'
#这里指的是应用程序所在的文件路径image_path = r'D:\pychram\test_ocr.png'
#这里是图片所在的路径img = Image.open(image_path)
text = pytesseract.image_to_string(img, lang='chi_sim+eng')
print(text)

需要识别的原图

控制台输出

整合ocr创建工具函数模块

之前的参考函数

def chat_with_markdown():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 | llmquestion = input("请输入问题:")response = chat.invoke({"question": question})print(response.content)

现在要统一拆开,分类和识别,为之后的接口调用做好准备

关于文件识别还是统一使用markitdown模块,因为除了不支持文件,基本上都完成了识别

然后就是利用上述的ocr进行一个识别图片,关于pdf文件里面含有图片再讨论,得要实现基本的文件流程,后续专精的事后续再考虑,因为到时候可能要采用多模态的模型来使用,方便快捷识别,而不是采用basex64来写,虽然这个也行,但是实现有点麻烦,我这里还没找到相关的内容。

可以的话自行降低langchain版本,使用paddle-ocr实现图片,pdf多文件内容识别,我们这里就采用小巧型的方便写法。

普通文件识别函数

def text_file_ocr(file_path):try:md = MarkItDown()res = md.convert(file_path)text = res.text_contentreturn textexcept Exception as e:print(f"Error processing file: {e}")return None

图片文件识别函数

def image_file_ocr(file_path):try:pytesseract.pytesseract.tesseract_cmd = os.getenv("TESSERACT_CMD")img = Image.open(file_path)text = pytesseract.image_to_string(img, lang='chi_sim+eng')return textexcept Exception as e:print(f"Error processing image: {e}")return None

对于文件后缀名作为识别来进行函数分类调用函数

这里使用

file_path.endswith

来进行后缀名识别

代码

def ocr_file(file_path):"""此函数是用来做文件分类,ocr识别操作的:param file_path::return:"""if file_path.endswith((".txt", ".text", ".docx", ".doc", ".pdf", ".md")):return text_file_ocr(file_path)elif file_path.endswith((".png", ".jpg", ".jpeg")):return image_file_ocr(file_path)else:return None

示例代码参考

import pytesseract
from PIL import Image
import warningsfrom dotenv import load_dotenv
from markitdown import MarkItDown
import osload_dotenv()warnings.filterwarnings("ignore", message="Couldn't find ffmpeg or avconv*")def text_file_ocr(file_path):try:md = MarkItDown()res = md.convert(file_path)text = res.text_contentreturn textexcept Exception as e:print(f"Error processing file: {e}")return Nonedef image_file_ocr(file_path):try:pytesseract.pytesseract.tesseract_cmd = os.getenv("TESSERACT_CMD")img = Image.open(file_path)text = pytesseract.image_to_string(img, lang='chi_sim+eng')return textexcept Exception as e:print(f"Error processing image: {e}")return Nonedef ocr_file(file_path):"""此函数是用来做文件分类,ocr识别操作的:param file_path::return:"""if file_path.endswith((".txt", ".text", ".docx", ".doc", ".pdf", ".md")):return text_file_ocr(file_path)elif file_path.endswith((".png", ".jpg", ".jpeg")):return image_file_ocr(file_path)else:return None

结束语

关于这里就没什么特别的代码演示,接下来的篇章将会学习使用fastapi创建对话接口,关于这里,我想最后说明,我的代码仅供参考,不一定正确,可以的话如果有错和问题可以私信我,咱们一起讨论和学习。

http://www.dtcms.com/a/537291.html

相关文章:

  • 如何添加网站logo天津网站定制公司
  • 做网站需要规划哪些内容南宁网站seo大概多少钱
  • 第15天:网络基础与故障排除
  • confluence or 语雀 or sward,知识管理工具一文全方位对比
  • 易语言中函数参数“参考”的基本概念
  • 阿里巴巴国际站的前台网址是西安美食网页设计
  • 制作网站需要怎么做苏州注册公司流程和步骤
  • 云栖实录 | 驰骋在数据洪流上:Flink+Hologres驱动零跑科技实时计算的应用与实践
  • 基层建设是哪个网站的工作总结及工作计划
  • 网站开发学习网站ui设计怎么自学
  • 整站优化工具wordpress joonla安全
  • 在Linux下循环创建N个子进程的实现与解析
  • Spring AI Alibaba 基于JWT的鉴权登录系统实现详解
  • 软件测试(五)--自动化测试Selenium(一)
  • 网站项目开发网站菜单导航制作教程
  • 兰州最好的网站建设公司青岛网站优化排名
  • 某汽车公司4S店携手Acrel-5000建筑能耗管理系统,实现连锁门店能源精细化管理新突破
  • LeetCode 刷题【135. 分发糖果】
  • 专业做网站建设的网站内页产品 首页推荐
  • TCP 流通信中的 EOFException 与 JSON 半包问题解析
  • Garnet技术深度解析:微软研究院出品的高性能缓存存储引擎
  • 如何制作论坛网站网页制作软件是哪个
  • 《从点击到响应:HTTP 请求是如何传出去的》
  • 科技+文化:从“参观游览”到“沉浸共生”的文旅产业革命
  • 做条形图的网站河南郑州网站建设
  • 青少儿机器人技术学什么?
  • 基本魔法语言数组 (一) (C语言)
  • php源码网站修改保定建设厅网站
  • 网站建设访问对象网站开发毕设的需求分析
  • 【实战】自然语言处理--长文本分类(2)BERTSplitLSTM算法