使用GPT-4o API、Claude Sonnet 3.5 API和Invofox API解析文档(附代码示例)
从非结构化文档(如PDF和图片)中提取结构化数据可能很快变得棘手。
随着基础模型和专用API的兴起,如今仅需几行代码就能将混乱的发票转换为整洁的JSON。
因此,我将比较三种不同的文档解析方法:使用OpenAI的GPT-4o、Anthropic的Claude 3.5 Sonnet以及Invofox API。
我选择Invofox是因为它是一家由YC支持的初创公司,专门为文档解析而构建。它使用了针对发票和其他文档优化的专用模型(自有模型和最佳LLM组合),而GPT/Claude是通用型大语言模型。
你将看到真实的Python代码、实际输出结果以及每种工具的适用场景分析(优缺点)。文末还附有详细的功能与性能对比表格。
完整代码可在GitHub仓库中找到。
🎯 使用 GPT-4o (ChatGPT) API
让我们从OpenAI的GPT-4o开始。它能够在正确提示下理解文本并提取结构化信息。但与Invofox不同,它无法直接读取PDF文件。
因此我们需要先使用OCR工具(如Tesseract、pdfplumber或在线工具)提取文本,然后通过API提示将该文本发送给GPT。
GPT-4o(特别是通过ChatGPT网页界面和某些API端点,尤其是Azure OpenAI服务中的接口)可以接受PDF和图像作为输入并提取结构化数据。但由于我们使用的是API,实际上无法实现这一功能。
你需要一个OpenAI API密钥。创建一个.env文件并按以下格式配置:
OPENAI_API_KEY=your_api_key
OPENAI_API_KEY=your_api_key

OpenAI API密钥
我们将使用Python来实现这一功能。以下是您可以亲自动手尝试的逐步指南。
第一步:配置Python环境
创建虚拟环境意味着为你的Python项目建立一个隔离的空间,所有依赖项都安装在本地(而非系统全局)。这样可以避免版本冲突并保持全局Python环境的整洁。下面我们来创建一个。
# macOS / Linux:
python3 -m venv env # creates a folder called 'env' with a local Python setup
source env/bin/activate # activates that environment
# Windows:
python -m venv env # same as above
.\env\Scripts\activate # activates it (Windows PowerShell / CMD)
当你在终端提示符开头看到 (env) 时,就表示它已激活。

第二步:安装所需软件包
我们需要两个主要库:
-
pdfplumber : 用于从PDF发票中提取文本
-
openai:用于调用GPT-4o API
-
python-dotenv : 从 .env 文件中加载环境变量到 Python 中,适用于管理 API 密钥和敏感信息。
pip install pdfplumber openai python-dotenv
我后来安装了python-dotenv,所以命令中看不到它。

安装完依赖项后,运行:
pip freeze > requirements.txt
这会将虚拟环境中所有已安装的包(及其版本)写入requirements.txt文件。之后您可以通过以下方式使用该文件:
pip install -r requirements.txt
为方便参考,请在根目录下添加一个.gitignore文件,以避免推送虚拟环境目录。
步骤3:提取文本并用GPT-4o解析
这是用于示例的发票PDF样本。我附上了截图以便您了解我们将要提取的字段内容。

我们将以openai-main.py为文件名编写完整代码。
import pdfplumber
import openai
from dotenv import load_dotenv
import os
load_dotenv()
client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
def extract_text_from_pdf(pdf_path):
text = ""
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
page_text = page.extract_text()
if page_text:
text += page_text + "\n"
return text
def parse_invoice_with_openai(invoice_text):
prompt = (
"Extract the following fields from this invoice text and return as a JSON object:\n"
"- Invoice Number\n"
"- Invoice Date\n"
"- Due Date\n"
"- Invoice Status (e.g. unpaid/paid)\n"
"- Sender Name and Email\n"
"- Recipient Name and Email\n"
"- Items (description, quantity, rate)\n"
"- Total Amount\n"
"- Memo\n\n"
"Invoice Text:\n"
f"{invoice_text}"
)
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt},
],
max_tokens=500,
temperature=0,
)
return response.choices[0].message.content
if __name__ == "__main__":
pdf_path = "invoice_sample.pdf"
invoice_text = extract_text_from_pdf(pdf_path)
parsed_data = parse_invoice_with_openai(invoice_text)
print(parsed_data)
这是一个简单的解释:
-
extract_text_from_pdf:使用pdfplumber读取PDF的每一页并将提取的文本拼接起来。这将为您提供原始的、非结构化的发票内容字符串。
-
parse_invoice_with_openai : 通过ChatCompletion端点向GPT-4o模型发送此提示,要求GPT-4o提取五个关键字段。
-
模型随后处理提示并返回一个JSON格式的响应。
步骤4:输出结果
以下是运行脚本 python openai-main.py 后的 JSON 响应。
{
"Invoice Number": "2-7-25",
"Invoice Date": "July 2, 2025",
"Due Date": "Upon receipt",
"Invoice Status": "UNPAID",
"Sender Name and Email": {
"Name": "Anmol Baranwal",
"Email": "hi@anmolbaranwal.com"
},
"Recipient Name and Email": {
"Name": "Anmol Baranwal",
"Email": "anmolbaranwal09@gmail.com"
},
"Line Items": [
{
"Description": "Testing",
"Quantity": 1,
"Rate": "$50.00",
"Total": "$50.00"
},
{
"Description": "Development",
"Quantity": 1,
"Rate": "$100.00",
"Total": "$100.00"
},
{
"Description": "Blog",
"Quantity": 1,
"Rate": "$50.00",
"Total": "$50.00"
}
],
"Subtotal": "$200.00",
"Total Amount": "$200.00",
"Memo or Notes": "Thank you! This is a sample invoice for testing document parsing with AI models."
}
GPT-4o(ChatGPT)输出的发票行项目标签并不统一使用"lines"。有时会显示为"Line Items"或其他非标准名称,而其他工具(如Invofox)则始终使用统一名称如"lines"来标识这些条目。

终端输出
我们通过系统提示指导GPT-4o解析文本。由于当前API能力已足够强大(相比之前的OpenAI模型),这种方式能取得不错的效果。
✅ 优点:易于尝试,灵活性强。GPT-4擅长逻辑处理和结构化数据提取,因此能准确识别发票字段并计算总金额。
⚠️ 缺点:
-
我认为问题在于我们仍需设计提示词并验证输出(这对大多数人来说并不现实)。
-
JSON 可能存在格式错误或字段缺失(可能出现幻觉数据)。
-
没有内置的验证或置信度评分。
-
GPT需要发送提示中的所有文本(对于大型文档来说成本高昂),且输出结果会因提示风格而异。
GPT-4o按令牌计费。针对1-2页发票内容提取的预估费用在0.005-0.018美元区间,具体取决于提示词和输出内容的详细程度。您也可以根据实际使用场景,通过这个价格计算器进行测算。
响应时间通常在1-30秒之间,但可能因流量高峰出现延迟,特别是处理大型提示时。
🎯 使用 Claude 3.5 Sonnet API
Anthropic的Claude 3.5 Sonnet模型在正确提示下同样能够解析文本中的结构化数据。与GPT-4o类似,该模型无法通过API直接读取PDF文件,因此我们需要先从发票PDF中提取文本,再传递给Claude进行结构化解析。
您需要一个Anthropic API密钥。请创建一个.env文件并按以下格式配置:
ANTHROPIC_API_KEY=your_api_key

我们将再次使用Python进行配置,并遵循上一节相同的操作指南。
第一步:设置环境并安装依赖包
与之前一样,让我们在虚拟环境中隔离依赖项。
# macOS / Linux:
python3 -m venv env
source env/bin/activate
# Windows:
python -m venv env
.\env\Scripts\activate
终端激活后,会显示 (env) 前缀。
我们需要以下库:
-
pdfplumber:用于从PDF中提取文本
-
anthropic:与Claude 3.5交互的官方SDK
-
python-dotenv:用于从 .env 文件加载 API 密钥
pip install pdfplumber anthropic python-dotenv
若您正接续前例操作,我们只需安装anthropic包即可。

随后将环境导出至requirements.txt文件。请务必添加.gitignore文件以避免提交虚拟环境。
pip freeze > requirements.txt
第二步:提取文本并用Claude 3.5 Sonnet解析
随着Anthropic推出更安全、更强大的模型,他们会定期淘汰旧模型。你可以查看模型状态了解哪些模型已弃用、退役,哪些仍在活跃使用。本示例将使用当前活跃版本claude-3-5-sonnet-20240620。

让我们编写完整代码,文件名为anthropic-main.py。这与上一节非常相似,我使用了相同的发票PDF样本。
import pdfplumber
import anthropic
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("ANTHROPIC_API_KEY")
client = anthropic.Anthropic(api_key=api_key)
print("API Key loaded:", api_key[:12], "...")
def extract_text_from_pdf(pdf_path):
text = ""
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
text += page.extract_text() + "\n"
return text
def parse_invoice_with_claude(invoice_text):
prompt = (
"Extract the following fields from this invoice text and return as a JSON object:\n"
"- Invoice Number\n"
"- Invoice Date\n"
"- Due Date\n"
"- Invoice Status (e.g. unpaid/paid)\n"
"- Sender Name and Email\n"
"- Recipient Name and Email\n"
"- Items (description, quantity, rate)\n"
"- Total Amount\n"
"- Memo\n\n"
"Invoice Text:\n"
f"{invoice_text}"
)
response = client.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=500,
temperature=0,
messages=[{"role": "user", "content": prompt}],
)
return response.content[0].text
if __name__ == "__main__":
pdf_path = "invoice_sample.pdf"
invoice_text = extract_text_from_pdf(pdf_path)
parsed_data = parse_invoice_with_claude(invoice_text)
print(parsed_data)
这是一个简单的说明:
-
extract_text_from_pdf : 使用 pdfplumber 从 PDF 的每一页提取纯文本。
-
parse_invoice_with_claude:将文本发送给Claude Sonnet 3.5,并使用特定提示要求其输出JSON格式。
-
Claude 返回一个包含所请求字段的字符串化 JSON 块。
步骤3:输出
你可以在终端中使用 python anthropic-main.py 来运行脚本。以下是JSON响应:
{
"invoiceNumber": "2-7-25",
"invoiceDate": "July 2, 2025",
"dueDate": "Upon receipt",
"invoiceStatus": "UNPAID",
"senderName": "Anmol Baranwal",
"senderEmail": "hi@anmolbaranwal.com",
"recipientName": "Anmol Baranwal",
"recipientEmail": "anmolbaranwal09@gmail.com",
"items": [
{
"description": "Testing",
"quantity": 1,
"rate": 50.00
},
{
"description": "Development",
"quantity": 1,
"rate": 100.00
},
{
"description": "Blog",
"quantity": 1,
"rate": 50.00
}
],
"totalAmount": 200.00,
"memo": "Thank you! This is a sample invoice for testing document parsing with AI models."
}


✅ 优点:
-
Claude 3.5 在理解长文本和清晰格式化方面表现非常出色。
-
Claude Sonnet 能够处理其提示中的文本(甚至通过嵌入处理图像)
-
在某些情况下,它对异常或长文档的处理能力略优于GPT-4。
⚠️ 缺点:
-
与GPT类似,Claude也需要进行提示词工程。
-
与GPT类似,Claude有时也会遗漏字段或编造数值(产生幻觉)。
-
它仍然返回未经验证的原始JSON文本,因此你必须进行解析/验证。
-
你仍需自行提取文本,它无法解析原始PDF文件。
Claude 3.5 Sonnet 同样采用按 token 计费模式。针对 1-2 页发票内容提取的场景,预估成本在 0.005-0.018 美元区间浮动,具体取决于提示词和输出内容的详细程度。您也可以根据实际使用场景,通过这个成本计算器进行测算。
该模型处理简短提示(200-300毫秒)时表现出极快的响应速度,但面对更庞大或更复杂的输入时,延迟可能会升至10秒甚至更高。
🎯 使用Invofox API
我在寻找比基于代码(如OpenAI和Anthropic)需要提示工程的方法更好的解决方案时,发现了许多不错的工具,比如Invofox、Google Document AI、Amazon Textract等。
其中Invofox脱颖而出,因为它有Y Combinator的支持,并且具备我需要的所有功能。这让我有信心深入研究并尝试使用它。
它提供了一个即插即用、由AI驱动的文档解析API,可以非常轻松地从发票、收据、工资单、银行对账单、贷款/抵押文件以及自定义文档类型(如账单)中提取数据。
他们还有一些实用的内置功能,例如:
- ✅ 分割器
该系统能自动将单个PDF中包含的多个文档(如混合发票或对账单)进行分离,将页面按逻辑归类为子文档,从而实现更高效的提取与自动化处理。
用户可通过上传时的API进行配置,该功能与分类器协同工作,确保下游处理流程更加清晰可靠
(严格保留原文中的技术术语和功能描述,采用"对账单/下游处理"等专业表述,并保持"API/classifier"等英文专业名词不翻译。通过"归类为/协同工作"等动词结构准确传达技术逻辑,同时使用"更高效/更加清晰可靠"符合中文技术文档的表述习惯)
- ✅ 分类器
预训练AI模型,可自动识别文档类型(如发票、收据等),确保每份文档都能按正确模板处理。该功能为可选配置,可按环境或单次请求灵活启用。
系统还搭载了采用专利算法的高级AI模型,可智能校验并自动补全数据。查看API文档了解更多。

第一步:注册控制台账号
您可以注册仪表盘来生成API密钥。

您也可以手动上传文档,但我们将使用API,因为操作更简便且体验更优。

第二步:在Postman中创建请求
获取API密钥后,您可以使用Postman通过Invofox的/uploads端点发送待解析文档。
具体设置步骤如下:
✅ 1. 创建新请求
-
打开Postman桌面应用程序
-
创建一个集合并添加请求

-
将方法设置为 POST
-
我们需要请求这个端点:https://api.invofox.com/v1/ingest/uploads

✅ 2. 设置请求头
切换到Headers标签页并添加:
-
key: 接受, value: application/json
-
键: x-api-key, 值: your_invofox_api_key
你不应手动设置 Content-Type,因为在使用 form-data 时 Postman 会自动处理。它会告知服务器请求体中数据的格式:
-
application/json → 您正在发送原始JSON数据
-
multipart/form-data → 您正在发送文件及表单字段
-
application/x-www-form-urlencoded → 您正在发送类似表单的文本字段(类似于HTML表单)
当你使用 Postman 的 form-data 选项发送文件时,Postman 会自动设置正确的 Content-Type 和 boundary 值(这是 multipart/form-data 必需的)。
如果你手动设置成这样:
Content-Type: multipart/form-data
您遗漏了边界部分,这部分类似于:
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryxyz
让我们添加正文字段。
✅ 3. 添加正文 (form-data)
切换到 Body 选项卡,选择 form-data 并添加以下两个字段:
- 键:文件,类型:文件,值:上传您的发票(invoice_sample.pdf)

- key: info, type: text, value: 请粘贴下方的JSON
{
"type": "6840c4511cbcc77119347248",
// data field is optional
"data": {
"companyActsLike": "issuer"
}
}
此处data字段为可选项,仅当需要传递自定义元数据或额外指令时使用(例如用于影响解析逻辑的信息、验证偏好设置,或为自定义文档类型注册特殊用例)。

除标准类型(发票、工资单、银行对账单)外,您可在Invofox控制台注册自定义文档类型。这些自定义类型会获得类似 6840c4511cbcc77119347248 的唯一ID(示例中所用),这正是我们传递给API的标识。
通过指定类型ID,可确保文件严格按您预设的架构进行解析:
-
您的自定义JSON结构
-
您定义的字段名称
-
自定义验证规则与人工审核流程
✅ 4. 发送请求
点击“发送”。如果所有配置正确,您将收到包含 documentID 详情的响应。
-
importID 是本次上传的批次标识(便于追踪同时上传的多个文件)
-
documentID 是被解析文档的标识符
{
"accountId": "683edb9d7ded4695232c4979",
"environmentId": "683edb9d7ded4695232c497b",
"importId": "68662d83c3a0849a86a6aa30",
"files": [
{
"id": "68662d83c3a0849a86a6aa33",
"filename": "invoice_sample.pdf",
"documentId": "68662d83c3a0849a86a6aa34"
}
]
}

第三步:获取解析后的文档
有两种方法:一是通过Invofox仪表盘查看新解析的文档。您会注意到,行项目和明细以表格形式呈现。图形界面还提供了多种选项,包括对提取数据进行筛选。

根据工作流的设置情况,可能需要将其标记为已完成,因为人工介入能确保最高准确性并赋予我们更多控制权。
另一种(推荐)方式是向 https://api.invofox.com/documents/{documentID} 发起GET请求,请求头需包含:
-
键: accept, 值: application/json
-
键: x-api-key, 值: your_invofox_api_key

这是一个经过精简的JSON响应,保留了原始格式。该响应不仅提供了原始发票的图像,还包含了许多GPT-4o和Claude早期响应所没有的额外字段。
{
"hasClientRequest": false,
"canLock": false,
"canSkip": false,
...
"canEdit": false,
"result": {
"_id": "68662d83c3a0849a86a6aa34",
"account": "683edb9d7ded4695232c4979",
"environment": "683edb9d7ded4695232c497b",
"creator": "683edbcbee083d02af5bf7cf",
"clientData": {},
"type": "6840c4511cbcc77119347248",
"name": "invoice_sample.pdf",
"creation": "2025-07-03T07:13:08.950Z",
"images": [
"https://...-1.png"
],
"original": "https://.../invoice_sample.pdf",
"mimetype": "application/pdf",
"data": {
"documentNumber": {
"value": "2-7-25"
},
"issueDate": {
"value": "2025-07-02"
},
"language": {
"value": "en"
},
"breakdowns": [
{
"taxRate": { "value": 0 },
"taxBaseAmount": { "value": 200 },
"taxAmount": { "value": 0 },
...
"totalAmount": { "value": 200 },
"grossAmount": { "value": 200 }
}
],
"lines": [
{
"description": { "value": "Testing" },
"quantity": { "value": 1 },
...
"totalAmount": { "value": 50 },
"grossAmount": { "value": 50 }
},
{
"description": { "value": "Development" },
"quantity": { "value": 1 },
...
"totalAmount": { "value": 100 },
"grossAmount": { "value": 100 }
},
{
"description": { "value": "Blog" },
"quantity": { "value": 1 },
...
"totalAmount": { "value": 50 },
"grossAmount": { "value": 50 }
}
],
"totalTaxBaseAmount": { "value": 200 },
"totalTaxAmount": { "value": 0 },
"totalAmount": { "value": 200 }
},
"publicState": "approved",
"confidence": "low",
"import": {
"ref": "68662d83c3a0849a86a6aa30",
"file": "68662d83c3a0849a86a6aa33",
"filename": "invoice_sample.pdf",
...
},
...
}
}
产品定价未公开,有意向的用户需联系其团队获取商业报价。该产品专为生产环境的速度与可靠性优化,博客中公布的实测响应时间均稳定保持在5秒以内。
🎯 使用Invofox API的Python代码
许多开发者更喜欢通过代码来提取文档,因此让我们使用Python中的Invofox API来演示相同的过程。我们将保持简洁,仅展示代码和JSON响应。
整体流程与前文所述相同,故不再重复。如果您有兴趣自行探索,可以阅读文档。
我们需要安装requests库,这是一个简化HTTP请求(如GET、POST)和Web API调用的Python库。
pip install requests
我们还将使用Python内置的time模块,该模块已预装在所有标准Python环境中。time模块提供了多种与时间相关的功能,例如延迟(time.sleep())、时间戳等。在本例中,我们将利用它暂停程序执行,确保仪表盘有足够的时间处理文档。
以下是以invofox-main.py为文件名的完整代码:
import requests
import os
import json
from dotenv import load_dotenv
import time
load_dotenv()
API_BASE = "https://api.invofox.com"
API_KEY = os.getenv("INVOFOX_API_KEY")
PDF_PATH = "invoice_sample.pdf"
headers = {"accept": "application/json", "x-api-key": API_KEY}
with open(PDF_PATH, "rb") as f:
files = {"files": f}
info = {"type": "6840c4511cbcc77119347248", "data": {"companyActsLike": "issuer"}}
data = {"info": json.dumps(info)}
resp_upload = requests.post(
f"{API_BASE}/v1/ingest/uploads", headers=headers, files=files, data=data
)
upload_result = resp_upload.json()
print("Upload response:", upload_result)
import_id = upload_result.get("importId")
if not import_id:
raise ValueError("Import ID not found in upload response.")
# wait a moment for processing
time.sleep(2)
resp_import = requests.get(f"{API_BASE}/v1/ingest/imports/{import_id}", headers=headers)
import_info = resp_import.json()
print("Import info:", import_info)
files_info = import_info.get("files", [])
if not files_info or not files_info[0].get("documentIds"):
raise ValueError("Document IDs not found in import info.")
document_id = files_info[0]["documentIds"][0]
print("Document ID:", document_id)
time.sleep(20)
resp_get = requests.get(f"{API_BASE}/documents/{document_id}", headers=headers)
parsed_doc = resp_get.json()
print("Parsed Document Data:")
print(json.dumps(parsed_doc, indent=2))
以下是所有使用的Invofox API端点:
-
POST /v1/ingest/uploads → 上传带有元数据(类型及开票方信息)的PDF发票。返回一个importId。
-
GET /v1/ingest/imports/{importId} → 获取包含由importId生成的documentIds在内的详细信息。
-
GET /documents/{documentId} → 根据documentId获取完整解析的发票数据。
这是运行脚本 python invofox-main.py 后得到的JSON响应结果。

该JSON响应与通过Postman发起请求后获得的结果类似,响应中不仅包含原始发票的图像,还提供了许多实用字段。
结果与对比
让我们简要比较一下他们的方法。
- API 调用
GPT-4o/Claude → 通过提示词发送文本
Invofox → 使用API或批量上传文件(图片/PDF)
- 安装设置
GPT/Claude → 需要编写提示工程代码
Invofox → 极简代码,无需提示
- 验证
GPT/Claude → 需人工核验
Invofox → 内置验证及置信度评分
- 性能
GPT/Claude → 受限于令牌/窗口大小
Invofox → 通过后端OCR和AI处理多页文档
在解析发票时,我意识到以下几点:
-
ChatGPT (GPT-4o) :擅长在明确提示下解析已知字段。你会获得一个JSON字符串,但需自行解析/清理。若提示不清晰,可能出现错误。
-
Claude 3.5 (Sonnet):它与GPT-4非常相似。从快照中可以看到,Sonnet在处理发票字段时表现与GPT-4不相上下,有时在识别陌生术语方面甚至更胜一筹。不过我们仍需对提示词进行优化调整。
-
Invofox API:它开箱即用地返回了完全解析的发票JSON数据。所有字段均被准确提取并验证完毕。输出模式完全符合我们的需求,无需额外编码。
对比表格
在逐一探讨了各个选项后,现在让我们将它们并列对比。估算基于典型发票的篇幅:简单发票为1-2页,总计1000-2000个标记。
| 功能 | Invofox | GPT-4o | Claude 3.5 Sonnet |
|---|---|---|---|
| 无代码设置 | ✅ | ❌ (需要代码/提示) | ❌ (需要代码/提示) |
| 直接上传PDF/图片 | ✅ | ❌ (仅限文本) | ❌ (仅限文本) |
| 自定义文档类型支持 | ✅ (自定义ID) | ✅ (通过提示) | ✅ (通过提示) |
| 修复后的JSON模式 | ✅ | ❌ (根据提示变化) | ❌ (根据提示变化) |
| 一致的字段命名 | ✅ | ❌(“Line Items”变体) | ❌ |
| 内置验证 | ✅ | ❌ | ❌ |
| 置信度评分 | ✅ | ❌ | ❌ |
| 自动补全 | ✅ | ❌ | ❌ |
| 人工审核可选 | ✅ | ❌ | ❌ |
| 工作流编排 | ✅ (API/钩子/仪表盘) | ❌ | ❌ |
| 多语言OCR识别 | ✅ 支持 | ❌ 需依赖外部OCR | ❌ 需依赖外部OCR |
| 多页面文档支持 | ✅ | ❌ | ❌ |
| 处理速度 | ✅ (快速,<5秒) | ✅ (极速) | ⚠️ (较慢) |
成本与执行时间基准测试
我们在各部分已分别介绍了定价结构,但为了便于决策,我同时将其并列呈现。
| 工具 | 成本结构 | 典型成本(每份文档/简单发票) | 典型执行时间 | 备注 |
|---|---|---|---|---|
| Invofox | 按文档计费,基于使用量,无固定费用 | 定制化/非公开服务(提供免费试用,后续定制方案) | 单文档处理时间<5秒 | 专为生产环境打造,价格需联系销售咨询 |
| GPT-4o | 输入令牌每百万2.5美元,输出令牌每百万10美元 | 每次请求0.005至0.015美元(1000至2000令牌) | 每次请求耗时1至30秒,视负载情况而定 | 价格 = (输入令牌 + 输出令牌) × 单价 |
| Claude 3.5 Sonnet | 输入令牌每百万3美元,输出每百万15美元 | 0.006–0.018美元(1,000–2,000令牌) | 最佳情况约200–300毫秒,最长可达10秒以上 | API响应迅速,但批量/超大提示会增加处理时间 |
查看原始文件
cost_duration_benchmarks.md
由 GitHub 爱心托管
您还需认识到升级语言模型所涉及的持续成本和工作量。每当新版本发布时,团队通常需要对新模型进行基准测试、重新测试提示词与数据架构,并调整输出解析逻辑。
这些隐性维护成本虽不总是显而易见,却必须纳入考量。而使用 Invofox 则无需此类操作。
最终结论
对于快速实验或一次性任务,您可以使用GPT-4(ChatGPT API)或Claude Sonnet通过设计合适的提示词来解析发票文本。它们能较好地以JSON格式提取字段(因为GPT-4相比早期GPT-3能生成更结构化、更清晰的输出)。
但若需要稳定生产级的发票或收据解析能力,Invofox API更为出色。该API专为文档处理打造,采用先进的专有模型并持续接收反馈优化。
完整代码可查看GitHub代码库。
就是这样。
希望你已经学会了如何解析文档。如果有任何问题或反馈,请告诉我。
祝你今天愉快!下次见 😃
感谢你的阅读!🥰




422

被折叠的 条评论
为什么被折叠?



