【大模型算法工程】大模型應用工具化、忠誠度以及知識庫場景下PDF雙欄解析問題的討論

1. 大模型時代應用工具化以及無忠誠度現象討論

????????接觸大模型久了,也慢慢探到一些大模型能力表現非常自然和突出的場景,比如AI搜索(依賴大模型的理解總結能力)、AI對話(即chat,依賴大模型的生成能力)、AI工具使用(即智能體,依賴大模型的規劃能力),應該說目前主流應用就是圍繞這三個點進行的,沒有例外。比如近期推出的夸克超級框、manus智能體工具、ima知識庫都是如此。

? ? ? ? 另外,對于AI應用,當下用戶其實完全沒有忠誠度可言,這一特點是與之前移動應用時代app存在天壤之別。移動應用時代,更多是場景的擴展,將原來PC場景衍生到APP場景,用戶忠誠的依然是平臺資源本身。但到了AI應用時代,只要是哪一個產品使用更快更好更人性化,用戶就會果斷切換到新的產品。例如deepseek橫空出世,包括騰訊、阿里云、字節在內的大廠,直接集成到自家云產品,用戶也果斷從之前的kimi、豆包、智譜清言,切換到各種deepseek chat工具。還有最近身邊朋友看論文用夸克,但我推薦了另一款AI閱讀助手后,他發現AI閱讀助手表現更好,直接就放棄了夸克,改用我推薦的產品。這種現象和AI應用工具化有關,不需要依賴什么其他的資源,工具本身就是產品,隨時可以切換,哪種效率提升更快就用哪一種。

? ? ? ? 所以說,要想從眾多的模型、應用中凸顯出來,必然需要不斷追求對于場景最優的模型,用戶體驗越好的產品。這就繞不開產品匠心邏輯。反正當下既要速度也需要沉下心打磨出更好的產品。

????????說起產品打磨,回到知識庫RAG場景,要想RAG能夠又好又快又準確返回結果,一開始的文檔解析工作就非常值得好好做。最近用了deepseek、智譜清言的工具,發現文檔解析能力還有很多提升空間,只支持部分文檔的解析,這或許是大模型公司更關注基礎模型能力,只要有一個產品就行,但我覺得to C的產品還是有必要投入打磨。

2. 知識庫生態建設之雙欄PDF解析

? ? ? ?對于文檔解析,其中一個非常有意思的場景是對PDF雙欄文檔的解析,如果是按正常的解析工具以行為單位解析,會導致解析后的排版非常糟糕,比如夸克的解析,就不是很好。反而通義的工具表現很不錯。

?雙欄解析的目標:

  • 正確識別左右兩欄
  • 先處理左欄內容,再處理右欄內容
  • 每欄內部按照從上到下的順序排列

這里給一個簡單的雙欄解析思路:

  • 利用CV工具將 pdf 每一頁轉換為圖片
  • 利用目標檢測模型識別每一頁中的元素并標注類型,即版面分析(例如yolo)
  • 利用?OCR?來提取每一個元素中文字塊信息(例如paddle系列)
  • 利用表格抽取模型識別跨頁表格(可以自己訓)
  • 完成版面分析,讀取版面分析的JSON結果(包括每一模塊的坐標信息)
  • 對每一模塊元素進行排序,排序邏輯如下:
    • 計算每個元素在頁面左右兩側的覆蓋比例
    • 根據覆蓋比例確定元素屬于左欄還是右欄
    • 對于跨欄元素特殊處理
    • 按照"先左欄后右欄,同欄內從上到下"的順序輸出

實施方案:

  • 區分單欄和雙欄:

    • 計算所有文本塊中心點的橫坐標極差。
    • 設定一個閾值(可以調整),如果極差小于閾值,則判定為單欄,否則為雙欄。
  • 單欄排序:

    • 直接按中心點縱坐標(top)升序 排序。
  • 雙欄排序:

    • 計算頁面中線(即所有文本塊中心點的平均橫坐標)。
    • 文本塊分類:
      • 左欄:文本塊的 右邊界 < 中線
      • 右欄:文本塊的 左邊界 > 中線
      • 通欄:文本塊的 左邊界 < 中線 且 右邊界 > 中線
    • 排序順序:
      • 先對 左欄按 top 升序 排序。
      • 再對 右欄按 top 升序 排序。
      • 處理 通欄:
        • 通欄上方 的 右欄拼接到左欄后。
        • 通欄 內容放在其下方。
        • 通欄下方 的 右欄拼接到左欄后。

其中:

  • 頁面寬度估計:

    • 如果沒有提供 page_width,則從元素坐標中推斷最大右邊界作為頁面寬度,可用于適配不同頁面寬度的文檔。
  • 中線計算:

    • 采用 page_width / 2 計算頁面的中線坐標,然后通過文本塊覆蓋比例(左/右)來判斷其歸屬。
  • 更精準的左右欄判定:

    • 計算文本塊的左側部分寬度和右側部分寬度,再計算左右覆蓋比例。
    • 如果 90%以上的內容位于左側,則歸入左欄;如果 90%以上內容在右側,則歸入右欄。
    • 這種方式比簡單的 “右邊界 < 另一文本塊的左邊界” 方法更加準確,能夠適應不同尺寸的文本塊,尤其是跨欄情況。
  • 排序邏輯:

    • 左欄文本塊按照縱坐標排序,確保從上到下排列。
    • 右欄文本塊也按照縱坐標排序。
    • 最終合并:左欄 → 右欄,保證自然的閱讀順序。

代碼示例:

def sort_text_blocks(res):"""對文本塊進行排序,支持單欄、雙欄、通欄布局:param res: 文本塊列表,每個文本塊包含 'page_idx' 和 'extra_data'(包含 'position' 坐標):return: 經過排序的文本塊列表"""# 按頁碼排序res.sort(key=lambda x: get_page_idx_value(x["page_idx"]))sorted_res = []pages = {}# 按頁分組for block in res:page_idx = get_page_idx_value(block["page_idx"])pages.setdefault(page_idx, []).append(block)# 處理每一頁for page_idx, blocks in pages.items():if not blocks:continuemax_page_width = extract_max_page_width(blocks)page_center_x = max_page_width / 2left_column, right_column, full_column = [], [], []for block in blocks:position = block["extra_data"]["position"]if isinstance(position, list) and len(position) > 0 and isinstance(position[0], list):x1, x2, y1, y2 = position[min(1, len(position) - 1)]else:x1, x2, y1, y2 = positionblock_width = x2 - x1left_part = max(0, min(x2, page_center_x) - x1)right_part = max(0, x2 - max(x1, page_center_x))left_ratio = left_part / block_width if block_width > 0 else 0right_ratio = right_part / block_width if block_width > 0 else 0if left_ratio >= 0.9:left_column.append(block)elif right_ratio >= 0.9:right_column.append(block)else:full_column.append(block)# 按從上到下排序key_func = lambda b: get_position_value(b["extra_data"]["position"], 2)left_column.sort(key=key_func)right_column.sort(key=key_func)full_column.sort(key=key_func)if full_column:min_full_top = get_position_value(full_column[0]["extra_data"]["position"], 2)max_full_bottom = get_position_value(full_column[-1]["extra_data"]["position"], 3)sorted_blocks = ([b for b in left_column if get_position_value(b["extra_data"]["position"], 3) < min_full_top] +[b for b in right_column if get_position_value(b["extra_data"]["position"], 3) < min_full_top] +full_column +[b for b in left_column if get_position_value(b["extra_data"]["position"], 2) > max_full_bottom] +[b for b in right_column if get_position_value(b["extra_data"]["position"], 2) > max_full_bottom])else:sorted_blocks = left_column + right_columnsorted_res.extend(sorted_blocks)return sorted_res

3. 參考材料

【1】LLM常見問題(基于 AI 的 pdf 解析)

【2】雙欄學術論文轉換為單欄Markdown

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/74241.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74241.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/74241.shtml

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

相關文章

Java EE(13)——網絡編程——UDP/TCP回顯服務器

前言 本文主要介紹UDP和TCP相關的API&#xff0c;并且基于這兩套API實現回顯服務器 UDP和TCP UDP和TCP屬于網絡五層模型中傳輸層的協議 特點&#xff1a; UDP&#xff1a;無連接&#xff0c;不可靠&#xff0c;面向數據包&#xff0c;全雙工 TCP&#xff1a;有連接&#xff…

【藍橋杯】12111暖氣冰場(多源BFS 或者 二分)

思路 這題可以用BFS做&#xff0c;也可以用二分來做。 用二分這里只提供一個思路&#xff1a;對時間來二分查找&#xff0c;check函數就是檢查在特定的時間 t 0 t_0 t0?內每一個暖氣爐的傳播距離能否覆蓋所有格子。 用BFS做&#xff1a; 由幾個點開始向外擴散&#xff0c;知道…

使用bat批量獲取WORD中包含對應字符的段落,段落使用回車換行

get_word_paragraphs.vbs 獲取命令行參數 If WScript.Arguments.Count 0 ThenWScript.Quit 1 End If 獲取 Word 文檔路徑 docPath WScript.Arguments(0) 創建 Word 應用程序對象 Set objWord CreateObject("Word.Application") objWord.Visible False 打開 Word …

DeepSeek自學手冊:《從理論(模型訓練)到實踐(模型應用)》|73頁|附PPT下載方法

導 讀INTRODUCTION 今天分享是由ai呀蔡蔡團隊帶來的DeepSeek自學手冊&#xff1a;《從理論&#xff08;模型訓練&#xff09;到實踐&#xff08;模型應用&#xff09;》&#xff0c;這是一篇關于DeepSeek模型訓練、應用場景及替代方案的綜合指南文章&#xff0c;主要介紹了Deep…

WEB API 設計規范

REST API 簡介 REST 是 Representational State Transfer 的縮寫&#xff0c;它將資源作為核心概念&#xff0c;通過 HTTP 方法對資源進行操作。其本身是一套圍繞資源進行操作的架構規范。在實際應用中&#xff0c;更多的是體現在 API 的設計上。 企業在進行產品設計開發時&a…

QT軟件匠心開發,塑造卓越設計服務

在當今這個數字化飛速發展的時代&#xff0c;軟件已經成為我們生活中不可或缺的一部分。而QT&#xff0c;作為一款跨平臺的C圖形用戶界面應用程序開發框架&#xff0c;憑借其強大的功能和靈活性&#xff0c;在眾多軟件開發工具中脫穎而出。我們深知&#xff0c;在軟件開發領域&…

標貝科技入選2025年市級數據要素市場化配置改革“揭榜掛帥”名單

近日&#xff0c;山東省大數據局、青島市大數據局公布2025年數據要素市場化配置改革“揭榜掛帥”名單。標貝科技聯合嶗山區電子政務和大數據中心申報的“政務熱線通話錄音數據價值挖掘與權益保護”項目成功入選。這一成果不僅彰顯了標貝科技在數據領域的創新實力&#xff0c;更…

Flutter TextField 從入門到精通:掌握輸入框的完整指南

目錄 1. 引言 2. TextField 的基本用法 3. 主要屬性 4. 自定義 TextField 樣式 4.1 自定義邊框與提示文本 4.2 增加前綴/后綴圖標 4.3 只允許輸入數字 4.4 表單驗證系統 4.5 動態樣式修改 4.6 防抖搜索&#xff08;Debounce&#xff09; 5. 結論 相關推薦 1. 引言…

藍橋杯備賽 背包問題

背包問題 ![[背包問題.png]] 01背包 1.題意概要&#xff1a;有 n n n個物品和一個容量為 V V V的背包&#xff0c;每個物品有重量 w i w_i wi?和價值 v i v_i vi? 兩種屬性&#xff0c;要求選若干物品放入背包使背包中物品的總價值最大且背包中物品的總重量不超過背包的容…

MyBatis-Plus 自動填充:優雅實現創建/更新時間自動更新!

目錄 一、什么是 MyBatis-Plus 自動填充&#xff1f; &#x1f914;二、自動填充的原理 ??三、實際例子&#xff1a;創建時間和更新時間字段自動填充 ?四、注意事項 ??五、總結 &#x1f389; &#x1f31f;我的其他文章也講解的比較有趣&#x1f601;&#xff0c;如果喜歡…

arduino R4 SD卡讀寫測試

使用買來的 st7789LCD 顯示器背面就帶著一個 tf 卡槽&#xff0c;可以直接連接 tf 卡。使用 Sdfat 庫就可以實現對 sd 卡的讀寫操作。這里嘗試測試 sd 卡的讀寫功能。 LCD 顯示器的初始化 //定義LCD的對象 Adafruit_ST7789 tft Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);tf…

【武漢·4月11日】Parasoft聯合光庭信息研討會|邀您共探AI賦能新機遇

Parasoft聯合光庭信息Workshop邀您共探AI賦能新機遇 AI浪潮已至&#xff0c;你準備好了嗎&#xff1f; 在智能網聯汽車飛速發展的今天&#xff0c;AI技術正以前所未有的速度重塑行業生態。如何把握AI機遇&#xff0c;賦能企業創新&#xff1f; 4月11日&#xff0c;自動化軟件…

VLLM專題(三十九)—自動前綴緩存(二)

前綴緩存(Prefix Caching)是一種在LLM推理中廣泛使用的優化技術,旨在避免冗余的提示詞(prompt)計算。其核心思想很簡單——我們緩存已處理請求的鍵值緩存(kv-cache)塊,并在新請求的前綴與之前請求相同時重用這些塊。由于前綴緩存幾乎是一種“免費的午餐”,并且不會改變…

自動駕駛系統的車輛動力學建模:自行車模型與汽車模型的對比分析

在自動駕駛系統的車輛動力學建模中&#xff0c;自行車模型&#xff08;Bicycle Model&#xff09;和更復雜的汽車模型&#xff08;如雙軌模型或多體動力學模型&#xff09;各有其適用場景和優缺點。以下是兩者的詳細對比及選擇原因解析&#xff1a; 1. 模型定義與核心差異 特性…

C語言入門教程100講(6)類型修飾符

文章目錄 1. 什么是類型修飾符&#xff1f;2. 常見的類型修飾符3. 類型修飾符的使用3.1 short 和 long3.2 signed 和 unsigned 4. 類型修飾符的組合5. 示例代碼代碼解析&#xff1a;輸出結果&#xff1a; 6. 常見問題問題 1&#xff1a;short 和 long 的具體大小是多少&#xf…

Linux-Ubuntu 系統學習筆記 | 從入門到實戰

&#x1f4d8; Linux-Ubuntu 系統學習筆記 | 從入門到實戰 &#x1f4dc; 目錄 環境安裝基本操作Linux操作系統介紹文件系統常用命令用戶權限管理編輯器vimGCC編譯器動態庫與靜態庫Makefile 1. 環境安裝 &#x1f31f; 下載鏡像 推薦使用清華大學開源鏡像站下載Ubuntu鏡像&a…

防火墻帶寬管理

拓撲 配置 [fw]interface GigabitEthernet 0/0/0 [fw-GigabitEthernet0/0/0]service-manage all permit [fw]interface GigabitEthernet 1/0/0 [fw-GigabitEthernet1/0/0]ip address 12.0.0.1 24 [fw]interface GigabitEthernet 1/0/1 [fw-GigabitEthernet1/0/1]ip ad…

一人系統 之 為什么要做一人系統?

一人系統 之 賺錢認知篇&#xff08;下&#xff09; 本文 2119個字&#xff0c;大概閱讀時間 16分鐘。 在上一篇文章中&#xff0c;主要講了以下三個內容&#xff1a; 什么是好的工作&#xff1f;時薪高&#xff0c;并且有能力提升&#xff0c;而且最終可以獨立創業的工作&…

基于springboot的電影院管理系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 互聯網技術的成熟和普及&#xff0c;勢必會給人們的生活方式帶來不同程度的改變。越來越多的經營模式中都少不了線上運營&#xff0c;互聯網正強力推動著社會和經濟發展。國人對民族文化的自信和不同文化的包容&#xff0c;再加上電影行業的發展&#xff0c;如此繁榮吸引…

Java安全-類的動態加載

類的加載過程 先在方法區找class信息&#xff0c;有的話直接調用&#xff0c;沒有的話則使用類加載器加載到方法區(靜態成員放在靜態區&#xff0c;非靜態成功放在非靜態區)&#xff0c;靜態代碼塊在類加載時自動執行代碼&#xff0c;非靜態的不執行;先父類后子類&#xff0c;…