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

基于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%以上的数据准确率。该技术栈可灵活扩展应用于财务报表分析、医疗数据数字化等多个垂直领域。

相关文章:

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

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

创建阿里云CDN

创建阿里云CDN CDN域名管理 SSL证书上传...

tomcat的web管理

进入到conf cd /usr/local/tomcat/conf/备份tomcat-users.xml cp tomcat-users.xml{.,bak}编辑tomcat-users.xml vim tomcat-users.xml增加以下内容 配置tomcat-users.xml <role rolename"manager-gui"/><role rolename"admin-gui"/><use…...

【Linux系统】-----进程初相识:原理与概念全解析

Linux系列 文章目录 Linux系列前言一、进程的概念二、进程的管理三、Linux操作系统的进程管理3.1、进程标识符3.2、查看进程3.3、查看进程的PID和PPID 前言 经过前两篇文章的铺垫&#xff0c;我们对操作系统的管理方式已经有了比较完整的认识&#xff0c;今天我们将学习Linux比…...

分布式系统设计(架构能力)

一、微服务架构 服务治理 Nacos 注册中心&#xff08;AP模式&#xff09; CAP选择&#xff1a;Nacos 默认采用 AP 模式&#xff08;可用性 分区容忍性&#xff09;&#xff0c;通过心跳检测实现服务健康管理。服务发现&#xff1a;客户端定时拉取服务列表&#xff0c;支持权重…...

171. Excel 表列序号

Excel 表列序号 题目描述尝试做法推荐做法 题目描述 给你一个字符串 columnTitle &#xff0c;表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如&#xff1a; A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1: 输入: colum…...

在 Java 中使用 Apache POI 为 Word 文档添加水印

在 Java 中使用 Apache POI 为 Word 文档添加水印 在日常办公中&#xff0c;我们经常需要给 Word 文档添加水印&#xff0c;以标明文件的机密性或归属权。本文将介绍如何使用 Apache POI 库在 Java 中给 Word 文档添加水印。 技术栈 Apache POI&#xff1a;用于操作 Word 文…...

贪心算法二

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是贪心算法&#xff0c;并且掌握贪心算法。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! >…...

【大模型安全】大模型的技术风险

【大模型安全】大模型的技术风险 1.DDoS攻击2.常见的传统网络攻击方式3.恶意意图的识别4.AI生成虚假信息传播5.利用AI进行黑客攻击6.模型对抗攻击7.后门攻击8.Prompt攻击9.数据投毒攻击10.模型窃取攻击11.数据窃取攻击 1.DDoS攻击 2023年11月9日凌晨&#xff0c;OpenAI在官网公…...

Java 线程池中 shutdown 与 shutdownNow 的区别是什么?

Java 线程池中 shutdown 与 shutdownNow 的区别 核心行为差异 | 方法 | 行为描述 | |----------------|----------------------------------------------------------------------------| | shutdown | 平缓关闭线程池&#xff1a;1. 停止接受新任务。2. 已提交的任务&#xff…...

基于Spring Boot的共享学习经验系统的设计与实现

目录 摘 要 第1章 绪论 1.1研究背景与意义 1.2国内外现状 1.3研究目标 第2章 需求分析 2.1业务需求 2.1.1业务概述 2.1.2业务流程 2.2.1用例概述 2.2.2用例描述 2.3非功能性需求 第3章 系统设计 3.1技术路线 3.2系统功能模块设计 3.3系统架构 3.4数据库设计 3.4.1概念结构设…...

【简单的C++围棋游戏开发示例】

C围棋游戏开发简单示例&#xff08;控制台版&#xff09; ‌核心代码实现‌ #include <iostream> #include <vector> #include <queue> using namespace std;const int SIZE 9; // 简化棋盘为9x9‌:ml-citation{ref"1" data"citationList&…...

单片机中的基础外设GPIO的知识和应用—(6)

GPIO&#xff08;通用输入输出&#xff09;是单片机与外部世界交互的重要接口。单片机的GPIO引脚可以灵活配置为输入、输出、中断或复用功能&#xff0c;广泛应用于LED控制、按键读取、传感器通信等场景。下文以STM32F103C8T6的GPIO为例。有些51单片机IO功能有的稍微有不同&…...

10-Agent循环分析新闻并输出总结报告

目录 关键词 摘要 速览 自动新闻总结与行业分析报告生成流程 创建深度行业分析报告的工作流 测试用例执行与调试 业务逻辑与循环处理任务 演示如何在循环体中添加链接读取工具 使用大模型处理和分析新闻信息 构建循环分析新闻并生成综合报告的流程 分析和优化慢速循…...

十二、Redis Cluster(集群)详解:原理、搭建、数据分片与读写分离

Redis Cluster(集群)详解:原理、搭建、数据分片与读写分离 Redis Cluster 是 Redis 官方提供的分布式存储方案,通过数据分片(Sharding)实现 水平扩展(scalability),并提供 高可用性(HA) 和 故障自动转移(failover) 能力,解决了单机 Redis 内存受限、主从复制故障…...

贪心算法解题框架+经典反例分析,效率提升300%

贪心算法是一种在每一步选择中都采取当前状态下的最优决策&#xff0c;从而希望最终达到全局最优解的算法策略。以下从其定义、特点、一般步骤、应用场景及实例等方面进行讲解&#xff1a; 定义与基本思想 • 贪心算法在对问题求解时&#xff0c;总是做出在当前看来是最好的选…...

策略设计模式-下单

1、定义一个下单context类 通过这类来判断具体使用哪个实现类&#xff0c;可以通过一些枚举或者条件来判断 import com.alibaba.fastjson.JSON; import com.tc.common.exception.BusinessException; import com.tc.common.user.YjkUserDetails; import com.tc.institution.cons…...

Go加spy++隐藏窗口

最近发现有些软件的窗口就像狗皮膏药一样&#xff0c;关也关不掉&#xff0c;一点就要登录&#xff0c;属实是有点不爽了。 窗口的进程不能杀死&#xff0c;但是窗口我不想要。思路很简单&#xff0c;用 spy 找到要隐藏的窗口的句柄&#xff0c;然后调用 Windows 的 ShowWindo…...

React基础之tsx语法

tsx在jsx的基础上添加了新的类型&#xff0c;除此之外没有任何区别 事件绑定 function App() { const handleClick()>{ console.log(button被点击了); } return( <div className"App"> <button onClick{handleClick}>click me</button> </di…...

一体机:DeepSeek性能的“隐形枷锁”!

一体机是DeepSeek交付的最佳方式吗&#xff1f; 恰恰相反&#xff0c;一体机是阻碍DeepSeek提升推理性能的最大绊脚石。 为啥&#xff1f; 只因DeepSeek这个模型有点特殊&#xff0c;它是个高稀疏度的MoE模型。 MoE这种混合专家模型&#xff0c;设计的初衷是通过“激活一堆专…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

Spring AOP代理对象生成原理

代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】&#xff0c;这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...