admin管理员组文章数量:1029883
EasyDoc文档解析API,实测体验分享
最近在处理一批论文数据,之前经常用到的一些开源工具比如Mineru,有了预算之后我们调研一些闭源解析服务,虽然付费但是如果解析质量比较好的话,我们也是可以接收的。其中有一个工具是EasyDoc,下面给大家分享一下EasyDoc文档解析API的使用以及解析效果
EasyDoc简介
EasyDoc的三大功能
内容块智能识别
基于语义智能识别内容块,精准提取完整知识单元,为AI应用提供高质量的语料,提升模型的理解能力。
层次结构分析
构建清晰的文档结构树,无论是“第三章第四条第二款”,还是更复杂的层级关系,都能一目了然,使AI迅速定位并理解其确切位置和上下文联系。通过parent_id
,你可以轻松追踪每个内容块的层级关系,快速重建文档结构。
表格和图片深度解读
超越简单的表格和图片提取,EasyDoc能够深度理解表格和图片,提取结构化数据并提供语义解读,为AI推理提供丰富且准确的多模态信息。下图中vlm_understanding
部分就是EasyDoc的表格和图片的深度理解。
友好的API,轻松调用
EasyDoc支持多种输入格式(PPT, PPTX, PDF, DOC, DOCX, TXT)和输出格式(目前为JSON,未来还将支持Markdown),满足不同需求。EasyDoc提供三种API模式,满足不同需求:
Lite模式:高效处理基础场景
适用场景:适合快速开发与原型验证,提供基础文本提取功能。
代码语言:javascript代码运行次数:0运行复制curl --location --request POST '' \
--header 'api-key: <your-api-key>' \
--form 'file=@"<your-file-path>"' \
--form 'mode="lite"'
Pro模式:完美保留层次结构
适用场景:专为RAG系统优化,保留完整的文档层次结构,提升检索准确性。
代码语言:javascript代码运行次数:0运行复制curl --location --request POST '' \
--header 'api-key: <your-api-key>' \
--form 'file=@"<your-file-path>"' \
--form 'mode="pro"'
Premium模式:多模态全方位解析
适用场景:解锁表格和图片深度解析和理解,适合需要处理复杂数据的高级应用。
代码示例:
代码语言:javascript代码运行次数:0运行复制curl --location --request POST '' \
--header 'api-key: <your-api-key>' \
--form 'file=@"<your-file-path>"' \
--form 'mode="premium"'
免费试用
首发限时福利,新用户免费注册即获10美金API额度(可用于Lite模式5000页,或者Lite和Pro模式2000页),另外附赠500页Premium解析。
三步开始使用EasyDoc:
- 访问。
- 获取API密钥即可使用文档解析功能。
- 开始你的文档解析之旅!
PDF解析:基于EasyDoc解析Arxiv论文
刚好自己在采集科研论文,下面是我用EasyDoc解析论文的一些效果,在这里分享给大家。为了对比和Mineru等框架的区别,我们下面采用Premium来测试论文解析效果,大家也可以按照自己需求来切换不同解析模式。
下面是解析pdf的代码:
代码语言:javascript代码运行次数:0运行复制import requests
import os
import argparse
def parse_pdf_with_easydoc(api_key, file_path, mode="premium"):
"""
使用 EasyDoc API 解析 PDF 文件。
参数:
api_key (str): 你的 EasyDoc API 密钥
file_path (str): PDF 文件的路径
mode (str): 解析模式,默认为 "premium"
返回:
dict: API 的解析响应
"""
url = ";
# 检查文件是否存在
if not os.path.isfile(file_path):
raise FileNotFoundError(f"文件未找到: {file_path}")
# 准备请求的文件和数据
files = {
'file': (os.path.basename(file_path), open(file_path, 'rb'), 'application/pdf')
}
data = {
'mode': mode
}
headers = {
'api-key': api_key
}
try:
response = requests.post(url, headers=headers, files=files, data=data)
response.raise_for_status() # 对于 4XX/5XX 响应抛出异常
return response.json()
except requests.exceptions.RequestException as e:
print(f"向 EasyDoc API 发送请求时出错: {e}")
return None
finally:
# 确保关闭文件
files['file'][1].close()
def main():
parser = argparse.ArgumentParser(description='使用 EasyDoc API 解析 PDF')
parser.add_argument('--api-key', required=True, help='你的 EasyDoc API 密钥')
parser.add_argument('--file', required=True, help='PDF 文件路径')
parser.add_argument('--mode', default='premium', choices=['lite', 'pro','premium'],
help='解析模式(standard 或 premium)')
parser.add_argument('--output', help='输出文件路径(JSON 格式)')
args = parser.parse_args()
# 解析 PDF
result = parse_pdf_with_easydoc(args.api_key, args.file, args.mode)
if result:
print("PDF 解析成功!")
# 如果指定了输出文件,则保存结果
if args.output:
import json
with open(args.output, 'w', encoding='utf-8') as f:
json.dump(result, f, ensure_ascii=False, indent=2)
print(f"结果已保存到 {args.output}")
if __name__ == "__main__":
main()
参数说明如下:
代码语言:javascript代码运行次数:0运行复制usage: easydoc_demo.py [-h] --api-key API_KEY --file FILE [--mode {standard,premium}] [--output OUTPUT]
使用 EasyDoc API 解析 PDF
options:
-h, --help show this help message and exit
--api-key API_KEY 你的 EasyDoc API 密钥
--file FILE PDF 文件路径
--mode {standard,premium}
解析模式(standard 或 premium)
--output OUTPUT 输出文件路径(JSON 格式)
我们在命令行执行:
代码语言:javascript代码运行次数:0运行复制python easydoc_demo.py --api-key xxxx --file 2504.09554v1.pdf --mode premium --output demo.json
PDF 解析成功!
结果已保存到 demo.json
添加成功之后,我们可以EasyDoc平台看到任务列表:
下面我们根据task_id
获取解析结果
import requests
import os
import argparse
import time
def get_parse_result(api_key, task_id, max_retries=10, retry_interval=5):
"""
根据 task_id 获取解析结果。
参数:
api_key (str): 你的 EasyDoc API 密钥
task_id (str): 解析任务的ID
max_retries (int): 最大重试次数,默认为10
retry_interval (int): 重试间隔(秒),默认为5
返回:
dict: 解析结果
"""
url = f"/{task_id}/result"
headers = {
'api-key': api_key
}
retries = 0
while retries < max_retries:
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
result = response.json()
# 检查任务状态
if not result.get('success'):
print(f"获取结果失败: {result.get('errMessage')}")
return None
task_status = result.get('data', {}).get('task_status')
if task_status == "SUCCESS":
return result
elif task_status == "ERROR":
print(f"解析任务出错")
return result
elif task_status in ["PENDING", "PROGRESSING"]:
print(f"任务状态: {task_status},等待 {retry_interval} 秒后重试...")
time.sleep(retry_interval)
retries += 1
else:
print(f"未知任务状态: {task_status}")
return result
except requests.exceptions.RequestException as e:
print(f"获取解析结果时出错: {e}")
retries += 1
time.sleep(retry_interval)
print(f"达到最大重试次数 ({max_retries}),无法获取结果")
return None
result=get_parse_result(api_key="your-api-key",task_id="parse_5ab83d5b-2489-4e3a-8337-c577ebaac5f5")
print(result)
import json
with open("easydoc_result.json", "w", encoding="utf-8") as f:
json.dump(result, f, ensure_ascii=False, indent=4)
解析速度如果加上多模态对图表解析,速度还算可以接受
体验下来,有两个点不错的是:
- 做到了层级的识别,比如第二章的章节做了层级识别
- 第二点对图表内容做了vl的多模态解析,比如
"vlm_understanding": " 图片展示了四个折线图,每个图表代表了不同指标(Hit@1, Hit@3, Hit@5, 和 Hit@10)在不同数量文档下的变化情况。横轴表示“Number of Documents”,从280到2178不等,纵轴表示“Hit@”指标的值,范围从0.3到0.8。\n\n- 在左上角的图表中,红色菱形线代表Hit@1,绿色方块线代表Hit@3,橙色三角形线代表Hit@5,蓝色圆点线代表Hit@10。\n- 在右上角的图表中,红色菱形线代表Hit@3,绿色方块线代表Hit@5,橙色三角形线代表Hit@10,蓝色圆点线代表Hit@1。\n- 在左下角的图表中,红色菱形线代表Hit@5,绿色方块线代表Hit@10,橙色三角形线代表Hit@1,蓝色圆点线代表Hit@3。\n- 在右下角的图表中,红色菱形线代表Hit@10,绿色方块线代表Hit@1,橙色三角形线代表Hit@3,蓝色圆点线代表Hit@5。\n\n所有图表的趋势都是随着文档数量的增加,所有指标的值都在下降。"
不过现在官方还不支持markdown内容生成渲染,后续会支持
Word解析:跨页表格识别
为了验证是否像官方介绍可以识别跨页表格,下面是简单制作了一个跨页word文档
解析的结果中有text文本以及table两种格式:
对于跨页表格的内容识别,我们可以看到EasyDoc能够正确的识别内容以及将跨页表格内容合并在一起。
PPT解析:行业研究报告图表解析
在平时解析文档的过程中,我们会遇到ppt,其中ppt内容一般是图文并茂,传统的ppt解析方法只能解析文字,图片内容丢失比较多,下面是一个云计算行业报告:
解析命令如下:
代码语言:javascript代码运行次数:0运行复制python easydoc_demo.py --api-key xxxxx --file 云计算行业研究报告.ppt --mode premium --output demo.json
对于上面图片解析内容如下,多模态解析效果还是不错的
代码语言:javascript代码运行次数:0运行复制 图片展示了一个关于云计算市场细分的柱状图,展示了从2014年到2020年的数据。图表中包括了三个部分:IAAS(基础设施即服务)、PAAS(平台即服务)和SAAS(软件即服务)。每个部分用不同颜色表示,红色代表IAAS,灰色代表PAAS,深灰色代表SAAS。\n\n此外,图表中还有一条橙色线,显示了每年的增长率变化。增长率以百分比形式标注在图中的相应位置。\n\n具体年份的数据如下:\n- 2014年:IAAS为37.7亿美元,PAAS为122.7亿美元,增长率为20.6%。\n- 2015年:IAAS为161.6亿美元,PAAS为272.8亿美元,增长率为25.4%。\n- 2016年:IAAS为316.5亿美元,PAAS为378.3亿美元,增长率为24.9%。\n- 2017年:IAAS为299.2亿美元,PAAS为452.0亿美元,增长率为22.9%。\n- 2018年:IAAS为66.7亿美元,PAAS为391.2亿美元,增长率为535.3%。\n- 2019年:IAAS为89.6亿美元,PAAS为495.7亿美元,增长率为624.3%。\n- 2020年:IAAS为100.2亿美元,PAAS为720.0亿美元,增长率为615.1%。\n\n整个图表展示了云计算市场的快速增长,尤其是在PAAS部分的增长尤为显著。"
我们再看另外一张柱状图
核对了下数字,解析都对了
代码语言:javascript代码运行次数:0运行复制"在图片中,有一个条形图展示了五个不同方面的数据百分比。每个条形对应一个不同的方面,并附有相应的百分比值。具体如下:\n\n1. **成本低**:65.3%\n2. **IT支撑要求低**:62.6%\n3. **资源扩展速度快**:50.0%\n4. **部署周期短**:44.8%\n5. **其他**:34.7%\n\n每个条形的长度表示该方面的百分比大小,从左到右依次递增。"
最后结论
EasyDoc优点的话相比开源工具,一个做的比较好的就是可以支持层次结构分析,之前试了一些工具基本上只能识别出一级标题,其次对图表内容基于VL去做了识别解析,可能其他工具也有,但是单独部署一个多模态模型成本还是比价高的,这个相对方便一些。其次就是在后台工作空间我们可以实时看到解析精度,对于低代码用户很方便。
有一些不太完善的地方就是目前还不支持Markdown内容渲染、多模态解析图表目前是中文,有些场景论文是英文数据这个时候解析为中文感觉比较突兀,解析的效果和上下文关系联系比较弱,只是单纯的内容解析。
相关资源
- EasyDoc官网:
- 完整API文档:
- 中文版快速上手指南:
EasyDoc文档解析API,实测体验分享
最近在处理一批论文数据,之前经常用到的一些开源工具比如Mineru,有了预算之后我们调研一些闭源解析服务,虽然付费但是如果解析质量比较好的话,我们也是可以接收的。其中有一个工具是EasyDoc,下面给大家分享一下EasyDoc文档解析API的使用以及解析效果
EasyDoc简介
EasyDoc的三大功能
内容块智能识别
基于语义智能识别内容块,精准提取完整知识单元,为AI应用提供高质量的语料,提升模型的理解能力。
层次结构分析
构建清晰的文档结构树,无论是“第三章第四条第二款”,还是更复杂的层级关系,都能一目了然,使AI迅速定位并理解其确切位置和上下文联系。通过parent_id
,你可以轻松追踪每个内容块的层级关系,快速重建文档结构。
表格和图片深度解读
超越简单的表格和图片提取,EasyDoc能够深度理解表格和图片,提取结构化数据并提供语义解读,为AI推理提供丰富且准确的多模态信息。下图中vlm_understanding
部分就是EasyDoc的表格和图片的深度理解。
友好的API,轻松调用
EasyDoc支持多种输入格式(PPT, PPTX, PDF, DOC, DOCX, TXT)和输出格式(目前为JSON,未来还将支持Markdown),满足不同需求。EasyDoc提供三种API模式,满足不同需求:
Lite模式:高效处理基础场景
适用场景:适合快速开发与原型验证,提供基础文本提取功能。
代码语言:javascript代码运行次数:0运行复制curl --location --request POST '' \
--header 'api-key: <your-api-key>' \
--form 'file=@"<your-file-path>"' \
--form 'mode="lite"'
Pro模式:完美保留层次结构
适用场景:专为RAG系统优化,保留完整的文档层次结构,提升检索准确性。
代码语言:javascript代码运行次数:0运行复制curl --location --request POST '' \
--header 'api-key: <your-api-key>' \
--form 'file=@"<your-file-path>"' \
--form 'mode="pro"'
Premium模式:多模态全方位解析
适用场景:解锁表格和图片深度解析和理解,适合需要处理复杂数据的高级应用。
代码示例:
代码语言:javascript代码运行次数:0运行复制curl --location --request POST '' \
--header 'api-key: <your-api-key>' \
--form 'file=@"<your-file-path>"' \
--form 'mode="premium"'
免费试用
首发限时福利,新用户免费注册即获10美金API额度(可用于Lite模式5000页,或者Lite和Pro模式2000页),另外附赠500页Premium解析。
三步开始使用EasyDoc:
- 访问。
- 获取API密钥即可使用文档解析功能。
- 开始你的文档解析之旅!
PDF解析:基于EasyDoc解析Arxiv论文
刚好自己在采集科研论文,下面是我用EasyDoc解析论文的一些效果,在这里分享给大家。为了对比和Mineru等框架的区别,我们下面采用Premium来测试论文解析效果,大家也可以按照自己需求来切换不同解析模式。
下面是解析pdf的代码:
代码语言:javascript代码运行次数:0运行复制import requests
import os
import argparse
def parse_pdf_with_easydoc(api_key, file_path, mode="premium"):
"""
使用 EasyDoc API 解析 PDF 文件。
参数:
api_key (str): 你的 EasyDoc API 密钥
file_path (str): PDF 文件的路径
mode (str): 解析模式,默认为 "premium"
返回:
dict: API 的解析响应
"""
url = ";
# 检查文件是否存在
if not os.path.isfile(file_path):
raise FileNotFoundError(f"文件未找到: {file_path}")
# 准备请求的文件和数据
files = {
'file': (os.path.basename(file_path), open(file_path, 'rb'), 'application/pdf')
}
data = {
'mode': mode
}
headers = {
'api-key': api_key
}
try:
response = requests.post(url, headers=headers, files=files, data=data)
response.raise_for_status() # 对于 4XX/5XX 响应抛出异常
return response.json()
except requests.exceptions.RequestException as e:
print(f"向 EasyDoc API 发送请求时出错: {e}")
return None
finally:
# 确保关闭文件
files['file'][1].close()
def main():
parser = argparse.ArgumentParser(description='使用 EasyDoc API 解析 PDF')
parser.add_argument('--api-key', required=True, help='你的 EasyDoc API 密钥')
parser.add_argument('--file', required=True, help='PDF 文件路径')
parser.add_argument('--mode', default='premium', choices=['lite', 'pro','premium'],
help='解析模式(standard 或 premium)')
parser.add_argument('--output', help='输出文件路径(JSON 格式)')
args = parser.parse_args()
# 解析 PDF
result = parse_pdf_with_easydoc(args.api_key, args.file, args.mode)
if result:
print("PDF 解析成功!")
# 如果指定了输出文件,则保存结果
if args.output:
import json
with open(args.output, 'w', encoding='utf-8') as f:
json.dump(result, f, ensure_ascii=False, indent=2)
print(f"结果已保存到 {args.output}")
if __name__ == "__main__":
main()
参数说明如下:
代码语言:javascript代码运行次数:0运行复制usage: easydoc_demo.py [-h] --api-key API_KEY --file FILE [--mode {standard,premium}] [--output OUTPUT]
使用 EasyDoc API 解析 PDF
options:
-h, --help show this help message and exit
--api-key API_KEY 你的 EasyDoc API 密钥
--file FILE PDF 文件路径
--mode {standard,premium}
解析模式(standard 或 premium)
--output OUTPUT 输出文件路径(JSON 格式)
我们在命令行执行:
代码语言:javascript代码运行次数:0运行复制python easydoc_demo.py --api-key xxxx --file 2504.09554v1.pdf --mode premium --output demo.json
PDF 解析成功!
结果已保存到 demo.json
添加成功之后,我们可以EasyDoc平台看到任务列表:
下面我们根据task_id
获取解析结果
import requests
import os
import argparse
import time
def get_parse_result(api_key, task_id, max_retries=10, retry_interval=5):
"""
根据 task_id 获取解析结果。
参数:
api_key (str): 你的 EasyDoc API 密钥
task_id (str): 解析任务的ID
max_retries (int): 最大重试次数,默认为10
retry_interval (int): 重试间隔(秒),默认为5
返回:
dict: 解析结果
"""
url = f"/{task_id}/result"
headers = {
'api-key': api_key
}
retries = 0
while retries < max_retries:
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
result = response.json()
# 检查任务状态
if not result.get('success'):
print(f"获取结果失败: {result.get('errMessage')}")
return None
task_status = result.get('data', {}).get('task_status')
if task_status == "SUCCESS":
return result
elif task_status == "ERROR":
print(f"解析任务出错")
return result
elif task_status in ["PENDING", "PROGRESSING"]:
print(f"任务状态: {task_status},等待 {retry_interval} 秒后重试...")
time.sleep(retry_interval)
retries += 1
else:
print(f"未知任务状态: {task_status}")
return result
except requests.exceptions.RequestException as e:
print(f"获取解析结果时出错: {e}")
retries += 1
time.sleep(retry_interval)
print(f"达到最大重试次数 ({max_retries}),无法获取结果")
return None
result=get_parse_result(api_key="your-api-key",task_id="parse_5ab83d5b-2489-4e3a-8337-c577ebaac5f5")
print(result)
import json
with open("easydoc_result.json", "w", encoding="utf-8") as f:
json.dump(result, f, ensure_ascii=False, indent=4)
解析速度如果加上多模态对图表解析,速度还算可以接受
体验下来,有两个点不错的是:
- 做到了层级的识别,比如第二章的章节做了层级识别
- 第二点对图表内容做了vl的多模态解析,比如
"vlm_understanding": " 图片展示了四个折线图,每个图表代表了不同指标(Hit@1, Hit@3, Hit@5, 和 Hit@10)在不同数量文档下的变化情况。横轴表示“Number of Documents”,从280到2178不等,纵轴表示“Hit@”指标的值,范围从0.3到0.8。\n\n- 在左上角的图表中,红色菱形线代表Hit@1,绿色方块线代表Hit@3,橙色三角形线代表Hit@5,蓝色圆点线代表Hit@10。\n- 在右上角的图表中,红色菱形线代表Hit@3,绿色方块线代表Hit@5,橙色三角形线代表Hit@10,蓝色圆点线代表Hit@1。\n- 在左下角的图表中,红色菱形线代表Hit@5,绿色方块线代表Hit@10,橙色三角形线代表Hit@1,蓝色圆点线代表Hit@3。\n- 在右下角的图表中,红色菱形线代表Hit@10,绿色方块线代表Hit@1,橙色三角形线代表Hit@3,蓝色圆点线代表Hit@5。\n\n所有图表的趋势都是随着文档数量的增加,所有指标的值都在下降。"
不过现在官方还不支持markdown内容生成渲染,后续会支持
Word解析:跨页表格识别
为了验证是否像官方介绍可以识别跨页表格,下面是简单制作了一个跨页word文档
解析的结果中有text文本以及table两种格式:
对于跨页表格的内容识别,我们可以看到EasyDoc能够正确的识别内容以及将跨页表格内容合并在一起。
PPT解析:行业研究报告图表解析
在平时解析文档的过程中,我们会遇到ppt,其中ppt内容一般是图文并茂,传统的ppt解析方法只能解析文字,图片内容丢失比较多,下面是一个云计算行业报告:
解析命令如下:
代码语言:javascript代码运行次数:0运行复制python easydoc_demo.py --api-key xxxxx --file 云计算行业研究报告.ppt --mode premium --output demo.json
对于上面图片解析内容如下,多模态解析效果还是不错的
代码语言:javascript代码运行次数:0运行复制 图片展示了一个关于云计算市场细分的柱状图,展示了从2014年到2020年的数据。图表中包括了三个部分:IAAS(基础设施即服务)、PAAS(平台即服务)和SAAS(软件即服务)。每个部分用不同颜色表示,红色代表IAAS,灰色代表PAAS,深灰色代表SAAS。\n\n此外,图表中还有一条橙色线,显示了每年的增长率变化。增长率以百分比形式标注在图中的相应位置。\n\n具体年份的数据如下:\n- 2014年:IAAS为37.7亿美元,PAAS为122.7亿美元,增长率为20.6%。\n- 2015年:IAAS为161.6亿美元,PAAS为272.8亿美元,增长率为25.4%。\n- 2016年:IAAS为316.5亿美元,PAAS为378.3亿美元,增长率为24.9%。\n- 2017年:IAAS为299.2亿美元,PAAS为452.0亿美元,增长率为22.9%。\n- 2018年:IAAS为66.7亿美元,PAAS为391.2亿美元,增长率为535.3%。\n- 2019年:IAAS为89.6亿美元,PAAS为495.7亿美元,增长率为624.3%。\n- 2020年:IAAS为100.2亿美元,PAAS为720.0亿美元,增长率为615.1%。\n\n整个图表展示了云计算市场的快速增长,尤其是在PAAS部分的增长尤为显著。"
我们再看另外一张柱状图
核对了下数字,解析都对了
代码语言:javascript代码运行次数:0运行复制"在图片中,有一个条形图展示了五个不同方面的数据百分比。每个条形对应一个不同的方面,并附有相应的百分比值。具体如下:\n\n1. **成本低**:65.3%\n2. **IT支撑要求低**:62.6%\n3. **资源扩展速度快**:50.0%\n4. **部署周期短**:44.8%\n5. **其他**:34.7%\n\n每个条形的长度表示该方面的百分比大小,从左到右依次递增。"
最后结论
EasyDoc优点的话相比开源工具,一个做的比较好的就是可以支持层次结构分析,之前试了一些工具基本上只能识别出一级标题,其次对图表内容基于VL去做了识别解析,可能其他工具也有,但是单独部署一个多模态模型成本还是比价高的,这个相对方便一些。其次就是在后台工作空间我们可以实时看到解析精度,对于低代码用户很方便。
有一些不太完善的地方就是目前还不支持Markdown内容渲染、多模态解析图表目前是中文,有些场景论文是英文数据这个时候解析为中文感觉比较突兀,解析的效果和上下文关系联系比较弱,只是单纯的内容解析。
相关资源
- EasyDoc官网:
- 完整API文档:
- 中文版快速上手指南:
本文标签: EasyDoc文档解析API,实测体验分享
版权声明:本文标题:EasyDoc文档解析API,实测体验分享 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747616091a2193760.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论