基于RapidOCR与DeepSeek的智能表格转换技术实践


基于RapidOCR与DeepSeek的智能表格转换技术实践


一、技术背景与需求场景

在金融分析、数据报表处理等领域,存在大量图片格式的表格数据需要结构化处理。本文介绍基于开源RapidOCR表格识别与DeepSeek大模型的智能转换方案,实现以下典型场景:

  1. 金融研报分析:自动提取股票概念数据
  2. 企业报表处理:纸质表格数字化归档
  3. 数据中台建设:非结构化数据转结构化存储
  4. 自动化办公:会议记录表格快速电子化

二、技术架构设计

本方案采用四层处理架构:

有线表格
无线表格
图像输入
OCR识别层
表格类型判断
WiredTableRecognition
LinelessTableRecognition
结构化HTML
大模型数据清洗
Excel输出

三、核心代码实现

环境配置

# 基础依赖
pip install rapidocr_onnxruntime openpyxl openai
# 表格识别库
pip install wired-table-recognition lineless-table-recognition

完整实现代码

from rapidocr_onnxruntime import RapidOCR
from wired_table_rec import WiredTableRecognition
from lineless_table_rec import LinelessTableRecognition
from openai import OpenAI
import json
import reclass ImageToExcelConverter:def __init__(self, api_key):self.ocr_engine = RapidOCR()self.wired_rec = WiredTableRecognition()self.lineless_rec = LinelessTableRecognition()self.client = OpenAI(api_key=api_key, base_url="https://api.deepseek.com")def _call_deepseek(self, html_content):"""调用DeepSeek模型进行数据清洗"""PROMPT_TEMPLATE = '''请将以下表格内容转换为规范JSON格式:1. 提取股票简称、概念、创建日期等关键字段2. 去除免责声明等无关信息3. 日期格式统一为YYYY-MM-DD示例输出:[{"股票简称": "示例", "概念": "概念名称", ...}]待处理内容:{content}'''response = self.client.chat.completions.create(model="deepseek-reasoner",messages=[{"role": "user", "content": PROMPT_TEMPLATE.format(content=html_content)}],temperature=0.3)return self._parse_response(response.choices[0].message.content)def _parse_response(self, raw_text):"""解析大模型返回结果"""json_str = re.search(r'```json(.*?)```', raw_text, re.DOTALL)if json_str:try:return json.loads(json_str.group(1).strip())except json.JSONDecodeError:return self._retry_parsing(raw_text)return []def process_image(self, img_path):"""主处理流程"""# OCR识别ocr_result, _ = self.ocr_engine(img_path)# 表格结构识别html_wired = self.wired_rec.process(img_path, ocr_result)html_lineless = self.lineless_rec.process(img_path, ocr_result)# 数据清洗转换structured_data = self._call_deepseek(html_wired or html_lineless)# 生成Exceldf = pd.DataFrame(structured_data)output_path = f"{os.path.splitext(img_path)[0]}.xlsx"df.to_excel(output_path, index=False)return output_path

四、关键技术解析

1. 双模式表格识别

# 有线表格处理
wired_table_rec.process(img, enhance_box_line=True,  # 增强框线检测col_threshold=15,       # 列间距阈值rotated_fix=True        # 旋转矫正
)# 无线表格处理 
lineless_table_rec.process(img,row_threshold=10,       # 行间距阈值need_ocr=True           # 启用二次OCR
)

2. 大模型prompt工程

PROMPT设计要点:
- 字段提取规则明确
- 输出格式示例清晰
- 数据清洗要求具体化
- 异常数据处理策略

3. 数据验证机制

def validate_stock_data(data):"""数据校验函数"""REQUIRED_FIELDS = ['股票简称', '概念', '创建日期']for item in data:if not all(field in item for field in REQUIRED_FIELDS):return Falseif not re.match(r'\d{4}-\d{2}-\d{2}', item['创建日期']):return Falsereturn True

五、实践效果对比

原始图片 在这里插入图片描述

Excel输出

在这里插入图片描述


六、性能优化建议

  1. 并行处理优化
from concurrent.futures import ThreadPoolExecutordef batch_process(image_paths):with ThreadPoolExecutor(max_workers=4) as executor:results = list(executor.map(converter.process_image, image_paths))
  1. 缓存机制实现
from diskcache import Cachecache = Cache('./ocr_cache')@cache.memoize(expire=3600)
def cached_ocr_process(img_path):return ocr_engine(img_path)
  1. 识别精度提升
  • 自定义OCR字典:ocr_engine = RapidOCR(custom_vocab=["科创板", "北交所"])
  • 图像预处理:添加锐化、对比度调整
  • 表格检测增强:调整行列阈值参数

七、应用扩展方向

  1. 多模态文档处理
def process_pdf(pdf_path):for page in extract_pdf_pages(pdf_path):if detect_table(page):yield process_image(page)
  1. 实时流处理
import websocketsasync def realtime_processing(websocket):async for img_bytes in websocket:result = process_image(img_bytes)await websocket.send(result)
  1. 智能校验系统
def auto_correction(data):# 连接企业数据库校验validated = db_session.query(StockInfo).filter(StockInfo.name == data['股票简称']).exists()# 自动修正日期格式if not validate_date(data['创建日期']):return guess_date_format(data['创建日期'])

项目地址: GitHub - SmartTableConverter
在线体验: Demo Portal

通过本方案的实施,企业可将传统表格处理效率提升300%以上,同时保证99%以上的数据准确率。该技术栈可灵活扩展应用于财务报表分析、医疗数据数字化等多个垂直领域。

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

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

相关文章

字节跳动AI原生编程工具Trae和百度“三大开发神器”AgentBuilder、AppBuilder、ModelBuilder的区别是?

字节跳动AI编程工具Trae与百度"三大开发神器"(AgentBuilder、AppBuilder、ModelBuilder)在定位、功能架构和技术路线上存在显著差异,具体区别如下: 一、核心定位差异 Trae:AI原生集成开发环境(AI…

docker:Dockerfile案例之自定义centos7镜像

1 案例需求 自定义centos7镜像。要求&#xff1a; 默认登录路径为 /usr可以使用vim 2 实施步骤 编写dockerfile脚本 vim centos_dockerfile 内容如下&#xff1a; #定义父镜像 FROM centos:7#定义作者信息 MAINTAINER handsome <handsomehandsome.com># 设置阿里云…

【音视频】ffplay简单过滤器

一、ffplay简单过滤器 视频旋转&#xff1a;借助transpose滤镜 ffplay -i 1.mp4 -vf transpose1这里选择不同的数字是不同的方向&#xff1a; 视频翻转&#xff1a;借助hflip/vflip实现水平和垂直翻转&#xff1a; 水平翻转 ffplay 1.mp4 -vf hflip垂直翻转 ffplay 1.mp4 …

使用Kingfisher加载网络图片时使用indicatorType产生布局混乱

SheetInfoCell代码中&#xff0c;执行iconView.show(info.picurl) 时&#xff0c;若采用kf.indicatorType .activity&#xff0c;则会产生ui页面混乱&#xff0c;如果不使用这个加载动画&#xff0c;则不会产生。 与此同时&#xff0c;对于发现页面&#xff0c;是否使用加载动…

【慕课网wiki项目学习笔记01】Spring Boot 项目搭建

2-2 新建SpringBoot项目 一、创建SpringBoot项目 &#xff08;1&#xff09;在SpringBoot官网创建 &#xff08;2.1&#xff09;在 IDEA 中创建 Group&#xff1a;公司名 Artifact&#xff1a;项目名 创建成功后开始下载Maven依赖&#xff08;选择右下角的Import Changes&…

突破极限:高性能ROCK 220A-M 工业级无人机电调深度测评 —— 无人机动力系统的核心守护者

引言 在无人机技术高速发展的今天&#xff0c;动力系统的稳定性与效率成为决定任务成败的关键。作为工业级电调领域的标杆产品&#xff0c;ROCK 220A-M 凭借其卓越的性能与多重安全设计&#xff0c;为专业级无人机应用提供了可靠的动力解决方案。本文将从技术架构、防护…

Java-servlet(三)Java-servlet-Web环境搭建(下)详细讲解利用maven和tomcat搭建Java-servlet环境

Java-servlet&#xff08;三&#xff09;Java-servlet-Web环境搭建&#xff08;下&#xff09;利用maven和tomcat搭建Java-servlet环境 前言一、配置maven阿里镜像二、利用IDEA创建maven文件创建maven文件删除src文件创建新的src模版删除example以及org文件 三、在第二个xml文件…

YOLOv12本地部署教程——42%速度提升,让高效目标检测触手可及

YOLOv12 是“你只看一次”&#xff08;You Only Look Once, YOLO&#xff09;系列的最新版本&#xff0c;于 2025 年 2 月发布。它引入了注意力机制&#xff0c;提升了检测精度&#xff0c;同时保持了高效的实时性能。在保持速度的同时&#xff0c;显著提升了检测精度。例如&am…

快速生成viso流程图图片形式

我们在写详细设计文档的过程中总会不可避免的涉及到时序图或者流程图的绘制&#xff0c;viso这个软件大部分技术人员都会使用&#xff0c;但是想要画的好看&#xff0c;画的科学还是比较难的&#xff0c;现在我总结一套比较好的方法可以生成好看科学的viso图(图片格式)。主要思…

关于后端接口的返回值问题

1、后端接口中&#xff0c;get请求能返回给前端一个整数么&#xff1f; 问题说明&#xff1a; 解释&#xff1a; 在 Spring MVC 项目中&#xff0c;GET 请求的后端接口可以返回一个整数给前端。因为我们在controller层中&#xff0c;设置了RestController注解&#xff0c;这表明…

第十五届蓝桥杯----B组cpp----真题解析(小白版本)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 必看前言&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;一、试题A&#xff1a;握手问题1.题意分析2.代码解答 二、试题B&#xff1a;小球反弹1.题意…

1493. 删掉一个元素以后全为 1 的最长子数组

目录 一、题目二、思路2.1 解题思路2.2 代码尝试2.3 疑难问题2.4 复盘 三、解法四、收获4.1 心得4.2 举一反三 一、题目 二、思路 2.1 解题思路 2.2 代码尝试 class Solution { public:int longestSubarray(vector<int>& nums) {int len0;int l0;int a1;int ret1;…

解锁前端表单数据的秘密旅程:从后端到用户选择!✨

&#x1f604; 解锁前端表单数据的秘密旅程&#xff1a;从后端到用户选择&#xff01;✨ 嘿&#xff0c;技术爱好者们&#xff01;&#x1f44b; 你有没有在开发中遇到过这样的困惑&#xff1a;表单里的数据&#xff08;比如图片附件、识别点 ID&#xff09;从哪儿来的&#x…

Nerf流程

一.数据处理&#xff1a; 在输入数据时&#xff0c;并没有给出相机的内参与外参&#xff0c;需要在数据处理得出相机的内外惨数&#xff0c;作者使用COLMAP得到相机参数后&#xff0c;转成NeRF可以读取的格式即可以用于模型训练。 旋转矩阵的第一列到第三列分别表示了相机坐标系…

与中国联通技术共建:通过obdiag分析OceanBase DDL中的报错场景

中国联通软件研究院&#xff08;简称联通软研院&#xff09;在全面评估与广泛调研后&#xff0c;在 2021年底决定采用OceanBase 作为基础&#xff0c;自研分布式数据库产品CUDB&#xff08;即China Unicom Database&#xff0c;中国联通数据库&#xff09;。目前&#xff0c;该…

前端实现版本更新自动检测✅

&#x1f916; 作者简介&#xff1a;水煮白菜王&#xff0c;一位资深前端劝退师 &#x1f47b; &#x1f440; 文章专栏&#xff1a; 前端专栏 &#xff0c;记录一下平时在博客写作中&#xff0c;总结出的一些开发技巧和知识归纳总结✍。 感谢支持&#x1f495;&#x1f495;&a…

GitHub教程

目录 1.是什么?2.安装3.创建库3.增删改查4.远程仓库5.分支6.标签7.使用流程8.总结 1.是什么? Git 是一个命令行工具&#xff0c;但也有许多图形用户界面可用。本地仓库&#xff0c;安装包下载到本地。Git 的一个流行 GUI 是 GitHub&#xff0c;它可以方便地管理存储库、推送…

VsCode + EIDE + OpenOCD + STM32(野火DAP) 开发环境配置

VsCode EIDE OpenOCD STM32(野火DAP) 开发环境配置 接受了新时代编辑器的我&#xff0c;实在受不了Keil的上古编辑页面&#xff0c;周树人说过&#xff1a;由奢入俭难&#xff0c;下面我们一起折腾一下开源软件Vscode&#xff0c; 用以开发51和STM32&#xff0c;有错误之处&…

【MySQL】表的增删查改(CRUD)(下)

个人主页&#xff1a;♡喜欢做梦 欢迎 &#x1f44d;点赞 ➕关注 ❤️收藏 &#x1f4ac;评论 本篇是继上篇的下篇&#xff0c;如果上篇没有看过小伙伴&#xff0c;可以先看看我的上一篇再来看一下这一篇【MySQL】表的增删查改&#xff08;CRUD&#xff09;&#xff08;上…

知识周汇 | Python操作Excel全攻略系列(一):模块详解篇

目录 系列文章 前言 1 知识概览 2 模块详解 2.1 openpyxl 2.2 pandas 2.3 xlrd 2.4 xlwt 2.5 xlsxwriter 2.6 xlwing 3 后续 系列文章 知识周汇 | Python操作Excel全攻略系列&#xff08;二&#xff09;&#xff1a;文件操作篇 知识周汇 | Python操作Excel全攻略系…