MaxKB+合合信息TextIn:通过API实现PDF扫描件的文档审核

上海合合信息科技股份有限公司(以下简称为合合信息)是一家深耕人工智能、OCR(光学字符识别)及商业大数据技术领域的科技企业。该公司拥有领先的智能文字识别技术,其名片全能王(CamCard)、扫描全能王(CamScanner)和启信宝等核心产品的用户覆盖全球200多个国家和地区,服务用户超过10亿。

在OCR领域,合合信息实力雄厚,可以提供高精度的文档识别与处理解决方案,满足合同比对、财报管理、证照识别等多种场景需求。其OCR技术具备跨格式(Word、PDF和图片)比对、智能纠错、篡改检测等能力,能够精准识别复杂表格、跨页内容以及多语言文本。针对企业级文字识别场景,合合信息旗下的TextIn智能文档处理云平台及其他OCR私有化部署产品,可以灵活适配不同用户的复杂需求。

当前,众多企业正在积极构建文档审核智能体。MaxKB开源企业级智能体平台的文档提取组件主要针对纯文本内容提取,并将结果传递给大模型节点,对于PDF扫描件文档难以实现有效提取。本文将为您介绍MaxKB与TextIn智能文档处理云平台相结合,实现PDF扫描件文档提取与审核功能的具体方案。

一、实现方案

“MaxKB+TextIn”的PDF文档提取基于MaxKB V2版本实现。这主要是考虑到V2版本会存储原文,实现起来更简单。整体流程遵循“用户/文档信息录入→工具提取文档关键信息→大模型融合信息执行审核并输出结果”的实现路径。

1.开启文件MaxKB的文件上传功能,获取文件元数据信息;

2.通过编写函数工具,把文件ID拼接到原文的链接上(通过此链接可以点击直接下载原文);

3.通过函数库实现创建临时文件保存PDF文件,然后调用TextIn智能文档处理云平台的API接口实现上传PDF文件并转换为Markdown格式,然后返回转换结果;

4.调用大模型,结合前面提取的文档信息和用户需求,让AI执行“文档审核”逻辑,生成审核结果或回答。
在这里插入图片描述

▲图1 通过API实现PDF扫描件文档审核流程

二、关键步骤解析

1.生成PDF下载链接

在MaxKB高级编排中启用文件上传功能后,MaxKB系统将在{{开始.document}}参数中存储用户上传文档的URL信息。通过编写函数工具解析该参数获取URL,并按http://:<端口号>/admin/application/的格式输出,即可生成对应的PDF文件下载链接。

输入参数配置为:
在这里插入图片描述

函数代码如下:

import jsondef build_file_url_from_json(data):"""从数据中解析出 file_id 并拼接 URL支持输入:JSON字符串 或 已解析的Python列表对象参数:data (str or list): 包含文件信息的JSON字符串或Python列表返回:str: 拼接后的完整URL"""try:# 如果输入是字符串,尝试解析为JSONif isinstance(data, str):# 替换单引号为双引号(处理不标准的JSON)data_str= data.replace("'", '"')data = json.loads(data_str)# 验证数据格式:必须是列表且第一个元素有file_idif not isinstance(data, list) or len(data) == 0:raise ValueError("数据必须是非空列表")if 'file_id' not in data[0]:raise ValueError("列表中的元素缺少'file_id'字段")return "http://10.1.12.36:8080/admin/oss/file/" + data[0]['file_id']except json.JSONDecodeError:raise ValueError("无效的JSON字符串")except Exception as e:raise ValueError(f"解析失败: {str(e)}")def process_data(input_data):  try:file_url = build_file_url_from_json(input_data)print("转换成功")return file_urlexcept ValueError as e:print(f"转换失败: {str(e)}")  return None 

流程编排效果如下:
在这里插入图片描述

2.创建TextIn接口调用函数

函数通过调用TextIn的OCR服务,将指定PDF扫描件下载链接的文档转换为Markdown格式文本。使用前,请注册TextIn智能文档处理云平台(www.textin.com)获取认证凭证(x-ti-app-id和x-ti-secret-code),替换代码中的相应参数值。

输入参数配置为:
在这里插入图片描述

函数代码如下:

import os
import requests
import tempfiledef download_and_convert_pdf(pdf_url):"""下载PDF并转换为Markdown,返回转换结果"""try:# 创建临时文件保存PDFwith tempfile.NamedTemporaryFile(delete=False, suffix='.pdf') as temp_file:temp_pdf_path = temp_file.name# 下载PDFresponse = requests.get(pdf_url)response.raise_for_status()temp_file.write(response.content)# API端点url = "https://api.textin.com/ai/service/v1/pdf_to_markdown"headers = {"x-ti-app-id": "eb4b7ff649d97b0c9***********","x-ti-secret-code": "9c635bae8961f55eed************","Content-Type": "application/octet-stream"}# 读取PDF文件内容并发送请求with open(temp_pdf_path, 'rb') as f:response = requests.post(url, headers=headers, data=f.read())response.raise_for_status()result = response.json()# 清理临时文件os.unlink(temp_pdf_path)# 处理API响应if result.get("code") == 200:return result.get("result", {}).get("markdown", "")else:print(f"API请求失败: {result.get('message', '未知错误')}")return Noneexcept requests.exceptions.RequestException as e:print(f"网络请求错误: {e}")return Noneexcept Exception as e:print(f"处理PDF时出错: {e}")return None# 从外部传入URL参数
def process_pdf(url):   markdown_content = download_and_convert_pdf(url) if markdown_content:print("转换成功")return markdown_contentelse:print("转换失败")return None

3.调用函数实现OCR识别并转为Markdown格式输出

函数执行成功后,其返回值将包含经OCR识别并转换为Markdown格式的文本内容。
在这里插入图片描述

4.调用大模型基于输出的Markdown内容进行审核

在MaxKB的AI对话节点中,大模型能够深度解析OCR转换后的Markdown文本。用户可以针对业务重点灵活配置提示词,通过定制化的审核直接生成带修正建议的审核结果,从而降低排查的时间成本。
在这里插入图片描述

三、效果展示

首先,准备好一份PDF文档扫描件。
在这里插入图片描述

在MaxKB中构建好工作流,具体如下。
在这里插入图片描述

文档审核的对话结果如下,系统对错别字进行了标注,给出了语句修改建议、格式调整意见等审核反馈。
在这里插入图片描述

四、延伸思考

本文所介绍的PDF扫描件文档审核方案适用于所有可以通过函数库接入的OCR工具,无论是合合信息TextIn这样的专业云服务,还是企业自建的私有化OCR平台,均可实现灵活接入。MaxKB与OCR技术与服务的结合,能够帮助用户有效突破扫描件文档处理的瓶颈,构建全格式智能审核的闭环。

通过MaxKB与OCR服务的结合,企业不需要投入高成本进行OCR模块的自研,就能直接复用高精度的文本识别能力,在实际业务场景中实现扫描件的秒级解析与审核,大幅提升文档处理效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93047.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis 核心入门:从概念到实战,一篇掌握简单增删改查

目录 一、什么是 MyBatis&#xff1f;为什么要用它&#xff1f; 二、MyBatis 核心概念&#xff08;通俗理解&#xff09; 1.SqlSessionFactory 2.SqlSession 3.Mapper接口 4.映射文件&#xff08;XML&#xff09; 三、手把手搭建第一个 MyBatis 项目 1. 准备工作 2. 核心配置文…

数据结构初阶(12)排序算法—插入排序(插入、希尔)(动图演示)

2. 常见排序算法的实现2.0 十大排序算法2.1 插入排序 2.1.1 基本思想直接插入排序是一种简单的插入排序法&#xff1a;基本思想把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中。直到所有的记录插入完为止&#xff0c;得到一个新的有序序列 。 比 挪 (…

MySQL优化常用的几个方法

本实例是对慢sql从2万优化到5千优化方法的汇总。 首先贴上优化效果&#xff1a;1、更新数据时使用ID更新&#xff1b;2、"分页/轮询"查询时先获取符合数据要求主键的最大和最小ID&#xff0c;然后WHERE条件增加ID步增查询&#xff1b;3、检查SQL是否命中WHERE条件&am…

深入解析 AUTOSAR:汽车软件开发的革命性架构

引言在汽车智能化、网联化、电动化浪潮席卷全球的今天&#xff0c;汽车电子系统的复杂性与日俱增。传统“烟囱式”的 ECU 开发模式&#xff08;各供应商独立开发软硬件&#xff09;带来了巨大的兼容性、复用性和维护成本挑战。AUTOSAR&#xff08;AUTomotive Open System ARchi…

计算机视觉(opencv)实战一——图像本质、数字矩阵、RGB + 图片基本操作(灰度、裁剪、替换等)

OpenCV 入门教程&#xff1a; OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉库&#xff0c;广泛应用于图像处理、视频分析、机器学习等领域。 在 Python 中&#xff0c;cv2 是 OpenCV 的主要接口模块。本文将带你一步步掌握 cv2…

《探索C++ set与multiset容器:深入有序唯一性集合的实现与应用》

前引&#xff1a;在STL的关联式容器中&#xff0c;set以其严格的元素唯一性和自动排序特性成为处理有序数据的核心工具。其底层基于红黑树&#xff08;Red-Black Tree&#xff09;实现&#xff0c;保证了O(log n)的查找、插入与删除复杂度&#xff01;本文将从底层原理切入&…

各测试平台功能对比分析(ITP,Postman,Apifox,MeterSphere)

对比ITP与Postman,Apifox,MeterSphere 功能特性ITPPostmanApifoxMeterSphere接口测试✅ 可视化接口调试&#xff0c;支持多种请求方式✅ 支持✅ 支持✅ 支持场景测试✅ 多接口串联测试&#xff0c;支持前后置脚本✅ Collections功能✅ 支持✅ 支持定时任务✅ 基于Celery的定时…

开源日志log4cplus—如何将 string类型转为tstring类型,又如何将char*类型转换为tstring类型?

文章目录&#x1f527; 一、理解 log4cplus::tstring 的本质⚙️ 二、std::string 转 tstring 的三种方法✅ 1. 使用内置宏 LOG4CPLUS_STRING_TO_TSTRING&#xff08;推荐&#xff09;✅ 2. 手动条件编译转换&#xff08;精细控制&#xff09;✅ 3. 多字节模式下的直接赋值⚙️…

深度学习之CNN网络简介

CNN网络简单介绍 1.概述 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;是一种专门用于处理具有网格状结构数据的深度学习模型。 ​ CNN网络主要有三部分构成&#xff1a;卷积层、池化层和全连接层构成&#xff0c;其中卷积层负责提取图像中…

【微实验】基频提取的MATLAB实现(优化版)

前情提要&#xff1a; 【超详细】科普&#xff1a;别再只会用自相关&#xff01;YIN 和 PYIN 如何破解音频隐藏密码&#xff1f;-CSDN博客 【微实验】妈妈我的MATLAB会识别声音的基频了&#xff01;-CSDN博客 今天用MATLAB把算法封装成函数&#xff0c;然后调用对比结果。 …

开发 npm 包【详细教程】(含发布 npm 包,版本号升级,修改包后重新发布等)

1. 给 npm 包取个【唯一】的名字&#xff01; npm 包命名规范 只能包含小写字母&#xff08;a-z&#xff09;、数字&#xff08;0-9&#xff09;、连字符&#xff08;-&#xff09; 和 下划线&#xff08;_&#xff09;&#xff0c;不能包含空格、大写字母、标点符号&#xff…

Secure 第三天作业

实验需求&#xff1a;1.参考以上拓扑所示&#xff0c;完成以下需求&#xff1a;1&#xff09; 配置各设备 IP 地址2&#xff09; 配置 ZBFW&#xff0c;Inside-1 和 nside-2 属于内部 Zone&#xff0c;Outside-1 属于外部 Zonezone security insidezone security outsidezone-p…

Linux应用层-5.计算机网络(菜鸟学习笔记)

计算机网络的核心是连接与通信&#xff0c;从底层的物理信号到上层的应用服务&#xff0c;各层协议协同工作---------------------------------------------------------------------------------------一.计算机网络分类&#xff08;按范围&#xff09;1•个人区域网&#xff…

[论文阅读] 人工智能 + 软件工程 | 大型语言模型对决传统方法:多语言漏洞修复能力大比拼

大型语言模型对决传统方法&#xff1a;多语言漏洞修复能力大比拼 论文阅读&#xff1a;On the Evaluation of Large Language Models in Multilingual Vulnerability RepairarXiv:2508.03470 On the Evaluation of Large Language Models in Multilingual Vulnerability Repair…

计算机网络2-3:传输方式

目录 串行传输和并行传输 同步传输和异步传输 单工、半双工以及全双工通信 总结 串行传输和并行传输 并行传输的优点是速度为串行传输的n倍&#xff0c;但也存在一个严重的缺点即成本高 同步传输和异步传输 单工、半双工以及全双工通信 总结

文档生成PPT软件哪个好?深度测评8款word转ppt生成工具

在日常办公与教学场景中&#xff0c;如何高效地将Word文档内容转化为专业PPT&#xff0c;一直是职场人士、教育工作者及内容创作者的共同痛点。随着AI技术的普及&#xff0c;一键式转换工具应运而生&#xff0c;它们不仅能精准识别Word中的标题与段落结构&#xff0c;还能自动套…

Azimutt:一款免费开源的多功能数据库工具

Azimutt 是一款支持数据库设计、表结构探索与分析、数据查询以及数据库文档生成功能的全栈工具。 Azimutt 是一个免费开源的项目&#xff0c;源代码托管在 GitHub&#xff1a; https://github.com/azimuttapp/azimutt 功能特性 多数据库支持&#xff1a;包括主流数据库 MySQ…

智算赋能:移动云助力“世界一流数据强港”建设之路

2024年5月&#xff0c;某创新产业园区智算中心正式揭牌成立。台下响起的掌声不仅是对一个项目的祝贺&#xff0c;更是客户对未来的期许—— 推动产业结构优化升级&#xff0c;领跑数字经济转型发展。5家500强企业、8家上市企业、17家独角兽企业……该创新产业园区在成为“世界一…

达梦自定义存储过程实现获取表完整的ddl语句

--导出表的ddl CREATE OR REPLACE PROCEDURE show_create_table( db IN varchar(255), tb IN varchar(255)) ASsql1 text;ret text : ;cmt text :;sql2 text :; BEGINFOR WSX IN (select TABLEDEF(db,tb) as ddl from dual) LOOPret: ret||WSX.DDL;END LOOP;ret : ret||chr(10…

【ARM】keil提示UVISION: Error: Encountered an improper argument

1、 文档目标 解决MDK退出debug模式后&#xff0c;提示UVISION: Error: Encountered an improper argument。 2、 问题场景 在退出Debug模式的时候&#xff0c;弹出提示窗口&#xff0c;提示&#xff1a;UVISION: Error: Encountered an improper argument。&#xff08;如图…