LLM應用構建前的非結構化數據處理(三)文檔表格的提取

1.學習內容

本節次學習內容來自于吳恩達老師的Preprocessing Unstructured Data for LLM Applications課程,因涉及到非結構化數據的相關處理,遂做學習整理。
本節主要學習pdf中的表格數據處理

2.環境準備

和之前一樣,可以參考LLM應用構建前的非結構化數據處理(一)標準化處理認識數據
,其中配置信息保持一致

同樣的,需要unstructured.io上獲取APIkey。

3.開始嘗試

3.1導入環境

# Warning control
import warnings
warnings.filterwarnings('ignore')from unstructured_client import UnstructuredClient
from unstructured_client.models import shared
from unstructured_client.models.errors import SDKErrorfrom unstructured.staging.base import dict_to_elements
# 初始化API
s = UnstructuredClient(api_key_auth="XXX",server_url="https://api.unstrXXX",
)

3.2樣例瀏覽

from IPython.display import Image
Image(filename="images/embedded-images-tables.jpg", height=600, width=600) 

輸出如下:
在這里插入圖片描述

3.3處理pdf文檔

filename = "example_files/embedded-images-tables.pdf"with open(filename, "rb") as f:files=shared.Files(content=f.read(),file_name=filename,)req = shared.PartitionParameters(files=files,strategy="hi_res",hi_res_model_name="yolox",skip_infer_table_types=[],pdf_infer_table_structure=True,
)try:resp = s.general.partition(req)elements = dict_to_elements(resp.elements)
except SDKError as e:print(e)
# 找到處理數據中的Table元素的unstructured對象數據
tables = [el for el in elements if el.category == "Table"]
tables[0].text

輸出如下:

'Inhibitor Polarization Corrosion be (V/dec) ba (V/dec) Ecorr (V) icorr (AJcm?) concentration (g) resistance (Q) rate (mmj/year) 0.0335 0.0409 —0.9393 0.0003 24.0910 2.8163 1.9460 0.0596 .8276 0.0002 121.440 1.5054 0.0163 0.2369 .8825 0.0001 42121 0.9476 s NO 03233 0.0540 —0.8027 5.39E-05 373.180 0.4318 0.1240 0.0556 .5896 5.46E-05 305.650 0.3772 = 5 0.0382 0.0086 .5356 1.24E-05 246.080 0.0919'

將其轉為html形式

table_html = tables[0].metadata.text_as_html
table_html

輸出如下:

'<table><thead><tr><th>Inhibitor concentration (g)</th><th>be (V/dec)</th><th>ba (V/dec)</th><th>Ecorr (V)</th><th>icorr (AJcm?)</th><th>Polarization resistance (Q)</th><th>Corrosion rate (mmj/year)</th></tr></thead><tbody><tr><td></td><td>0.0335</td><td>0.0409</td><td>—0.9393</td><td>0.0003</td><td>24.0910</td><td>2.8163</td></tr><tr><td>NO</td><td>1.9460</td><td>0.0596</td><td>—0.8276</td><td>0.0002</td><td>121.440</td><td>1.5054</td></tr><tr><td></td><td>0.0163</td><td>0.2369</td><td>—0.8825</td><td>0.0001</td><td>42121</td><td>0.9476</td></tr><tr><td>s</td><td>03233</td><td>0.0540</td><td>—0.8027</td><td>5.39E-05</td><td>373.180</td><td>0.4318</td></tr><tr><td></td><td>0.1240</td><td>0.0556</td><td>—0.5896</td><td>5.46E-05</td><td>305.650</td><td>0.3772</td></tr><tr><td>= 5</td><td>0.0382</td><td>0.0086</td><td>—0.5356</td><td>1.24E-05</td><td>246.080</td><td>0.0919</td></tr></tbody></table>'

3.4 格式化呈現

from io import StringIO 
from lxml import etreeparser = etree.XMLParser(remove_blank_text=True)
file_obj = StringIO(table_html)
tree = etree.parse(file_obj, parser)
print(etree.tostring(tree, pretty_print=True).decode())

輸出如下:

<table><thead><tr><th>Inhibitor concentration (g)</th><th>be (V/dec)</th><th>ba (V/dec)</th><th>Ecorr (V)</th><th>icorr (AJcm?)</th><th>Polarization resistance (Q)</th><th>Corrosion rate (mmj/year)</th></tr></thead><tbody><tr><td/><td>0.0335</td><td>0.0409</td><td>&#8212;0.9393</td><td>0.0003</td><td>24.0910</td><td>2.8163</td></tr><tr><td>NO</td><td>1.9460</td><td>0.0596</td><td>&#8212;0.8276</td><td>0.0002</td><td>121.440</td><td>1.5054</td></tr><tr><td/><td>0.0163</td><td>0.2369</td><td>&#8212;0.8825</td><td>0.0001</td><td>42121</td><td>0.9476</td></tr><tr><td>s</td><td>03233</td><td>0.0540</td><td>&#8212;0.8027</td><td>5.39E-05</td><td>373.180</td><td>0.4318</td></tr><tr><td/><td>0.1240</td><td>0.0556</td><td>&#8212;0.5896</td><td>5.46E-05</td><td>305.650</td><td>0.3772</td></tr><tr><td>= 5</td><td>0.0382</td><td>0.0086</td><td>&#8212;0.5356</td><td>1.24E-05</td><td>246.080</td><td>0.0919</td></tr></tbody>
</table>

3.5 還原表格到html中顯示

from IPython.core.display import HTML
HTML(table_html)

輸出如下:在這里插入圖片描述

3.6 借助langchain進行摘要

from langchain_openai import ChatOpenAI
from langchain_core.documents import Document
from langchain.chains.summarize import load_summarize_chainllm = ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo-1106")
chain = load_summarize_chain(llm, chain_type="stuff")
chain.invoke([Document(page_content=table_html)])

輸出如下:

{'input_documents': [Document(page_content='<table><thead><tr><th>Inhibitor concentration (g)</th><th>be (V/dec)</th><th>ba (V/dec)</th><th>Ecorr (V)</th><th>icorr (AJcm?)</th><th>Polarization resistance (Q)</th><th>Corrosion rate (mmj/year)</th></tr></thead><tbody><tr><td></td><td>0.0335</td><td>0.0409</td><td>—0.9393</td><td>0.0003</td><td>24.0910</td><td>2.8163</td></tr><tr><td>NO</td><td>1.9460</td><td>0.0596</td><td>—0.8276</td><td>0.0002</td><td>121.440</td><td>1.5054</td></tr><tr><td></td><td>0.0163</td><td>0.2369</td><td>—0.8825</td><td>0.0001</td><td>42121</td><td>0.9476</td></tr><tr><td>s</td><td>03233</td><td>0.0540</td><td>—0.8027</td><td>5.39E-05</td><td>373.180</td><td>0.4318</td></tr><tr><td></td><td>0.1240</td><td>0.0556</td><td>—0.5896</td><td>5.46E-05</td><td>305.650</td><td>0.3772</td></tr><tr><td>= 5</td><td>0.0382</td><td>0.0086</td><td>—0.5356</td><td>1.24E-05</td><td>246.080</td><td>0.0919</td></tr></tbody></table>')],'output_text': 'The table provides data on the corrosion rate and polarization resistance of different inhibitor concentrations in a solution. The data includes the inhibitor concentration, be and ba values, Ecorr, icorr, polarization resistance, and corrosion rate. The table shows the impact of different inhibitor concentrations on the corrosion rate and polarization resistance.'}

4. 總結

可以看到,非結構化數據識別還是有難度,不知道為什么,實驗中部分識別結果是錯的,如果追求準確性,還是得斟酌一下。

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

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

相關文章

金蝶部署常見問題解決

金蝶部署常見問題解決 金蝶版本&#xff1a; Apusic Application Server Enterprise Edition 9.0 SP8 kbc build 202312041121 報錯信息&#xff1a; 與金蝶官方人員溝通&#xff0c;發現lib包版本太低&#xff0c;升級后可正常使用。替換lib包后重啟服務。 下載lib: 鏈接: …

西瓜杯CTF(1)

#下班之前寫了兩個題&#xff0c;后面繼續發 Codeinject <?php#Author: h1xaerror_reporting(0); show_source(__FILE__);eval("var_dump((Object)$_POST[1]);"); payload 閉合后面的括號來拼接 POST / HTTP/1.1 Host: 1dc86f1a-cccc-4298-955d-e9179f026d54…

公司內部配置GitLab,通過SSH密鑰來實現免密clone、push等操作

公司內部配置GitLab&#xff0c;通過SSH密鑰來實現免密clone、push等操作。以下是配置SSH密鑰以實現免密更新的步驟&#xff1a; 1.生成SSH密鑰 在本地計算機上打開終端或命令提示符。輸入以下命令以生成一個新的SSH密鑰&#xff1a;ssh-keygen -t rsa -b 4096 -C "your…

VBA實現Excel數據排序功能

前言 本節會介紹使用VBA如何實現Excel工作表中數據的排序功能。 本節會通過下表數據內容為例進行實操&#xff1a; 1. Sort 單列排序 語法&#xff1a;Sort key1,Order1 說明&#xff1a; Key1&#xff1a;表示需要按照哪列進行排序 Order1&#xff1a;用來指定是升序xlAsce…

D2D用戶的功率優化算法研究

D2D通信技術是指兩個對等的用戶節點之間直接進行通信的一種通信方式。在由D2D通信用戶組成的分布式網絡中&#xff0c;每個用戶節點都能發送和接收信號&#xff0c;并具有自動路由(轉發消息)的功能。網絡的參與者共享它們所擁有的一部分硬件資源&#xff0c;包括信息處理、存儲…

短視頻矩陣搭建,用云微客獲客更方便

你的同行都爆單了&#xff0c;你還在問什么是矩陣&#xff1f;讓我來告訴你。短視頻矩陣是短視頻獲客的一種全新玩法&#xff0c;是以品牌宣傳、產品推廣為核心的一個高端布局手段&#xff0c;也是非常省錢的一種方式。 1.0時代&#xff0c;一部手機一個賬號&#xff1b;2.0時代…

demon drone 200無人機標定流程

demon drone 200無人機標定流程 一、飛控固件更新1.1 固件更新1.2 參數更新 二、imu標定2.1 安裝imu標定工具&#xff08;在你自己的電腦上&#xff09;2.2 錄制rosbag(在對應飛機上)2.3 運行標定程序&#xff08;在你自己的電腦上&#xff09; 三、雙目及imu聯合標定3.1 安裝標…

mysql索引筆記

這里想整理一下性能優化中用到的東西&#xff0c;先整理一下優化mysql索引中所查閱到的資料吧。 目錄 MySQL索引類型詳解存儲方式區分1.B樹索引2.哈希索引 邏輯區分1.普通索引2. 唯一索引3. 主鍵索引4. 空間索引5. 全文索引 實際使用區分1. 單列索引2. 多列索引 多表聯查如何建…

GD 32中斷系統實現

1.0 中斷的概念 中斷&#xff1a;簡單來說就是打斷的意思&#xff0c;在計算機系統中CPU在執行一個操作的時候&#xff0c;有一個比當前任務更為緊急的任務需要執行,cpu暫停當前任務轉而去執行更為緊急任務的操作&#xff0c;執行完更為緊急任務之后再返回來執行原來未執行完的…

SRS流媒體源碼解析--service

本文主要解析一下SRS3.0 service部分源碼&#xff0c;主要和srs_service_st模塊。 srs_service_st 模塊包含了網絡服務的基礎實現&#xff0c;特別是與套接字&#xff08;sockets&#xff09;和網絡通信相關的功能。主要功能和特點包括&#xff1a; &#xff08;1&#xff0…

高鐵站客運樞紐IPTV電視系統-鹽城高鐵站西廣場IP電視系統應用淺析

高鐵站客運樞紐IPTV電視系統-鹽城高鐵站西廣場IP電視系統應用淺析 由北京海特偉業科技有限公司任洪卓于2024年7月9日發布 隨著科技的飛速發展&#xff0c;特別是“互聯網”戰略的深入推進&#xff0c;高鐵站客運樞紐的信息化建設成為提升服務質量、增強乘客體驗的重要手段。鹽…

代碼隨想錄算法訓練營:29/60

非科班學習算法day29 | LeetCode134:加油站 &#xff0c;Leetcode135:分發糖果 &#xff0c;Leetcode860:檸檬水找零 介紹 包含LC的兩道題目&#xff0c;還有相應概念的補充。 相關圖解和更多版本&#xff1a; 代碼隨想錄 (programmercarl.com)https://programmercarl.com/…

IT專業高考假期入門指南

IT領域預習指南&#xff1a;開啟未來科技之旅 一、確定興趣方向 IT領域廣闊&#xff0c;涵蓋軟件開發、網絡安全、數據分析、人工智能等多個方向。首先&#xff0c;明確自己的興趣所在&#xff0c;這將決定你后續學習的重點。比如&#xff0c;如果你對構建應用程序感興趣&…

【1.3】動態規劃-解碼方法

一、題目 一條包含字母A-Z的消息通過以下映射進行了編碼&#xff1a; A -> 1 B -> 2 ... Z -> 26 要解碼已編碼的消息&#xff0c;所有數字必須基于上述映射的方法&#xff0c;反向映射回字母&…

新能源汽車充電站遠程監控系統S275鋇錸技術無線RTU

新能源汽車充電站的遠程監控系統在現代城市基礎設施中扮演著至關重要的角色&#xff0c;而鋇錸技術的S275無線RTU作為一款先進的物聯網數據監測采集控制短信報警終端&#xff0c;為充電站的安全運行和高效管理提供了強大的技術支持。 技術特點和功能 鋇錸S275采用了基于UCOSI…

Android11 窗口動畫

窗口進入動畫 應用端窗口繪制完成之后&#xff0c;調用finshDraw告知WMS&#xff0c;WMS這邊最后就會調用WindowSurfacePlacer的performSurfacePlacement方法&#xff0c;最終調用到 WindowStateAnimator的commitFinishDrawingLocked方法 //frameworks/base/services/core/jav…

JS進階-深入對象

學習目標&#xff1a; 掌握深入對象 學習內容&#xff1a; 創建對象三種方式構造函數實例成員&靜態成員 創建對象三種方式&#xff1a; 利用對象字面量創建對象 const o {name: 佩奇}利用new Object創建對象 const obj new Object({ uname: 雪碧寶寶 })console.log(obj…

OJhelper一款幫助你獲取各大oj信息的軟件

項目地址 應用功能 目前應用支持&#xff1a;查詢、自定義、收藏各大oj比賽信息&#xff0c;跳轉比賽界面。查詢各大oj的Rating分以及題量&#xff0c;查看題量餅狀圖。 應用環境 windows和安卓端 應用預覽&#xff1a; 維護概況 后期會提供持續更新&#xff0c;具體可以…

7.9數據結構

思維導圖 作業 doubleloop.h #ifndef __DOUBLELOOP_H__ #define __DOUBLELOOP_H__#include <stdio.h> #include <stdlib.h>typedef int datatype; typedef struct node {union{int len;datatype data;};struct node *pri;//前驅指針struct node *next;//后繼指針…

全終端自動化測試框架wyTest

突然有一些覺悟&#xff0c;程序猿不能只會吭哧吭哧的低頭做事&#xff0c;應該學會怎么去展示自己&#xff0c;怎么去宣傳自己&#xff0c;怎么把自己想做的事表述清楚。 于是&#xff0c;這兩天一直在整理自己的作品&#xff0c;也為接下來的找工作多做點準備。接下來…