基于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.pswp.cn/bicheng/72713.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72713.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72713.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

django中視圖作用和視圖功能 以及用法

在 Django REST Framework(DRF)中,視圖(View)是處理 HTTP 請求并返回響應的核心組件。DRF 提供了多種視圖類,適用于不同的場景和需求。以下是 DRF 中常見的視圖類及其作用、使用方法的詳細說明: 一、DRF 視圖的分類 DRF 的視圖可以分為以下幾類: 基于函數的視圖(Func…

希音(Shein)前端開發面試題集錦和參考答案

用 Node 寫過什么工具或 npm 包 在實際開發中,使用 Node 編寫過多種實用工具和 npm 包。 自動化構建工具 開發了一個簡單的自動化構建工具,用于處理前端項目的資源壓縮和合并。在前端項目中,為了優化性能,需要對 CSS 和 JavaScript 文件進行壓縮,減少文件體積,同時將多個…

C語言100天練習題【記錄本】

C語言經典100題(手把手 編程) 可以在嗶哩嗶哩找到 已解決的天數:一,二,五,六 下面的都是模模糊糊的 可以學學這些算法,我是算法白癡,但是我不是白癡,可以學&#xff…

迷你世界腳本文字板接口:Graphics

文字板接口:Graphics 彼得兔 更新時間: 2024-08-27 11:12:18 具體函數名及描述如下: 序號 函數名 函數描述 1 makeGraphicsText(...) 創建文字板信息 2 makeflotageText(...) 創建漂浮文字信息 3 makeGraphicsProgress(...) 創建進度條信息…

Crawl4AI: 賦能AI用戶的開源智能網頁爬蟲與數據提取

Crawl4AI: 賦能AI用戶的開源智能網頁爬蟲與數據提取 在當今人工智能時代,網絡爬蟲扮演著至關重要的角色。它們不僅是數據收集的強大工具,更是驅動機器學習、自然語言處理等技術發展的關鍵引擎。 然而,對于用戶來說,在面對復雜多…

下載b站視頻音頻

文章目錄 方案一:jjdown如何使用 方案二:bilibili嗶哩嗶哩下載助手如何使用進入插件網站插件下載插件安裝 使用插件下載視頻音頻:復制音頻下載地址 方案三:bat命令下載單個音頻下載單個視頻下載單個音視頻 方案一:jjdo…

【Git】linux搭建Gitea配置mysql數據庫

WindowsServer搭建內網Gitea【中文更方便使用】 1. 安裝Gitea # 下載 wget https://dl.gitea.io/gitea/1.23.5/gitea-1.23.5-linux-amd642. 創建用戶 # 創建 gitea 用戶 sudo adduser --system --shell /bin/bash --comment Git Version Control --create-home --home-dir /…

AI繪畫軟件Stable Diffusion詳解教程(6):文生圖、提示詞細說與繪圖案例

文生圖即以文字描述來生成圖像,這是目前所有AI繪畫軟件的基本功能之一。要想畫一副好的圖片,除了選擇好的模型,在文生圖中,提示詞特別關鍵。 一、什么是提示詞(Prompt) 提示詞又稱創意、關鍵詞、咒語、ca…

MATLAB實現遺傳算法優化風電_光伏_光熱_儲熱優化

1. 問題定義 目標:最小化輸出負荷與需求負荷的偏差平方和。決策變量:每個時間步長的風電、光伏、光熱和儲熱輸出功率。約束條件: 風電、光伏、光熱的輸出功率不得超過其最大容量。儲熱系統的輸出功率(充放電)不得超過…

Ubuntu20.04本地配置IsaacLab 4.2.0的G1訓練環境(一)

Ubuntu20.04本地配置IsaacLab的G1訓練環境(一) 配置Omniverse環境配置IsaacSim配置IsaacLab 寫在前面,如果Ubuntu剩余空間低于60G,則空間不足,除非你不需要資產包。但資產包中卻包含了G1模型、Go2模型等機器人模型和代…

Linux文管讀寫書簽

文件:~/.config/gtk-3.0/bookmarks 格式:file://路徑 名稱,每個一行。 QTreeWidgetItem清空item所有子節點 讀取書簽 void MainWindow::genBookmark() {QString fp QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) &…

芋道打包時報錯:缺失@unocss插件

在遇到打包時,報這個錯誤,提示構建失敗是因為 ESLint 在加載 unocss 插件時,找不到 unocss/eslint-plugin 模塊 解決辦法:安裝缺失的依賴:保證unocss/eslint-plugin已經被正確安裝, 使用以下命令安裝&…

【JAVA架構師成長之路】【JVM實戰】第2集:生產環境內存飆高排查實戰

課程標題:生產環境內存飆高排查實戰——從堆轉儲到代碼修復的15分鐘指南 目標:掌握內存泄漏與OOM問題的系統性排查方法,快速定位代碼或配置缺陷 0-1分鐘:問題引入與核心現象 線上服務內存持續增長,觸發頻繁Full GC甚至OOM(OutOfMemoryError),導致服務崩潰。常見誘因:…

PROFINET轉PROFIBUS從案例剖析網關模塊的協議轉換功能

一、 案例背景 在當下追求高效協同的工業自動化生產體系里,設備間的無縫互聯互通堪稱關鍵要素。某企業的生產車間中,有一臺性能穩定的變頻器,其配備的是PROFIBUS接口。與此同時,操控整個生產線的核心大腦——西門子1500 PLC&…

flutter環境最新踩坑

## Flutter 開發常見問題排查與解決 ### 1. 項目初始化與依賴問題 bash # 清理項目 flutter clean # 獲取依賴 flutter pub get # 詳細日志運行 flutter run -v ### 2. 網絡和下載問題 - 網絡慢可能導致依賴下載卡住 - 使用 -v 參數可查看詳細日志 - 檢查網絡連接 - 可以嘗…

xss筆記與打靶(更新中)

這個文章好 https://blog.csdn.net/huangyongkang666/article/details/123624164?fromshareblogdetail&sharetypeblogdetail&sharerId123624164&sharereferPC&sharesource2401_88818565&sharefromfrom_link 什么是xss XSS(跨站腳本攻擊&…

Visual Studio 2022新建c語言項目的詳細步驟

步驟1:點擊創建新項目 步驟2:到了項目模板 --> 選擇“控制臺應用” (在window終端運行代碼。默認打印"Hello World") --> 點擊 “下一步” 步驟3:到了配置新項目模塊 --> 輸入“項目名稱” --> 更改“位置”路徑&…

SQL進階技巧:上課時長計算

目錄 0 問題描述 1 數據準備 2 問題解決 核心難點 時間區間標記與分組 區間合并與時長計算

HashMap 在多線程環境下可能引發哪些問題?如何解決?

HashMap 在多線程環境下可能引發哪些問題? 答案: 在多線程同時操作 HashMap 時,可能引發 死循環、數據丟失、臟數據讀取 等問題。 根本原因: HashMap 的設計是非線程安全的,多線程并發修改其結構(如擴容、…

告別GitHub連不上!一分鐘快速訪問方案

一、當GitHub抽風時,你是否也這樣崩潰過? 😡 npm install卡在node-sass半小時不動😭 git clone到90%突然fatal: early EOF🤬 改了半天hosts文件,第二天又失效了... 根本原因:傳統代理需要復雜…