跳到主要内容

API文档

通过REST API将PDF分析集成到您的应用程序中

管理API令牌

首次分析

无需账户即可尝试 PDF 分析。添加令牌以使用账户额度并保存结果。

POST/api/v1/pdf/analyze
请求示例
curl -X POST https://pdfcheck.online/api/v1/pdf/analyze \
  -H "Accept: application/json" \
  -F "file=@document.pdf"

复制失败。请选中代码并手动复制。

身份验证
可选
上传上限
50 MB
基础URL
https://pdfcheck.online/api/v1

身份验证

PDF 分析可不使用令牌。账户信息、已保存的分析和令牌管理需要 Bearer 令牌。

请将令牌作为机密信息管理。使用环境变量,并在账户中撤销不再使用的令牌。 管理API令牌

请求示例
curl -X POST https://pdfcheck.online/api/v1/pdf/analyze \
  -H "Accept: application/json" \
  -H "Authorization: Bearer $PDFCHECK_API_TOKEN" \
  -F "file=@document.pdf"

复制失败。请选中代码并手动复制。

用量与限制

无账户:每个 IP 地址每天可分析 10 次。Free:每天 100 次。Pro 和 AI:无每日上限。处理端点还设有每分钟 30 次请求的限制。分析响应包含剩余检查次数。

访问权限每日分析次数上传上限
无需令牌1050 MB
Free10050 MB
Pro / AI无每日上限100 MB

处理端点还设有每分钟最多 30 次请求的限制。429 响应可能表示已达到每日或每分钟上限。

POST/pdf/analyze

上传并分析PDF文件。返回从PDF中提取的详细元数据。

名称类型描述
filemultipart/form-data必填. 待分析的 PDF 文件:匿名用户和 Free 套餐最多 50 MB;Pro 和 AI 套餐最多 100 MB。

响应示例;数值因文档而异。

响应示例
{
    "success": true,
    "data": {
        "id": "example-analysis-token",
        "view_key": "example-view-key",
        "filename": "document.pdf",
        "file_size": 1048576,
        "file_size_formatted": "1.00 MB",
        "metadata": {
            "basic": {
                "pages": 10,
                "pdf_version": "1.7",
                "analysis_mode": "lightweight",
                "partial_analysis": true
            },
            "document": {
                "title": "Example document",
                "author": "Example author",
                "creator": "Microsoft Word",
                "producer": "Adobe PDF Library"
            }
        },
        "analyzed_at": "2026-09-29T12:00:00+00:00"
    },
    "remaining_checks": 9
}

复制失败。请选中代码并手动复制。

API 元数据分析采用有处理范围限制的轻量模式。会跳过详细的字体、图像和颜色分析;metadata.basic.partial_analysis 为 true。

元数据和软件特征不能证明作者身份、真实性或标准合规性。

上传文件的数据会在处理后删除;分析结果和元数据可能保留。请参阅隐私政策。 隐私政策

GET/user

获取已验证用户的信息,包括每日使用限额。

需要令牌. 响应示例;数值因文档而异。

响应示例
{
    "success": true,
    "data": {
        "name": "Example user",
        "email": "user@example.com",
        "daily_limit": 100,
        "remaining_checks": 99,
        "checks_used_today": 1
    }
}

复制失败。请选中代码并手动复制。

GET/pdf

列出已验证用户的所有PDF分析记录,支持分页。

需要令牌

查询参数默认值描述
per_page20每页结果数(1-100)
page1integer
响应示例
{
    "success": true,
    "data": [
        {
            "id": "example-analysis-token",
            "filename": "document.pdf",
            "file_size": 1048576,
            "file_size_formatted": "1.00 MB",
            "analyzed_at": "2026-09-29T12:00:00+00:00"
        }
    ],
    "meta": {
        "current_page": 1,
        "last_page": 1,
        "per_page": 20,
        "total": 1
    }
}

复制失败。请选中代码并手动复制。

GET/pdf/{token}

通过分析ID(共享令牌)获取详细的分析结果。

需要令牌

请求示例
curl https://pdfcheck.online/api/v1/pdf/example-analysis-token \
  -H "Accept: application/json" \
  -H "Authorization: Bearer $PDFCHECK_API_TOKEN"

复制失败。请选中代码并手动复制。

端点参考

POST/pdf/extract-text

从 PDF 提取文本。通过 pdf 字段发送文件;此端点的上传上限为 50 MB,并返回 data.pages。

请求示例
curl -X POST https://pdfcheck.online/api/v1/pdf/extract-text \
  -H "Accept: application/json" \
  -F "pdf=@document.pdf"

复制失败。请选中代码并手动复制。

POST/pdf/to-markdown

将 PDF 转换为 Markdown。通过 pdf 字段发送文件(上限 50 MB)。独立额度:匿名用户和 Free 套餐每天可转换 10 次;Pro 和 AI 套餐每天可转换 100 次。扫描页面可能使用外部 AI OCR。 响应包含 remaining_conversions。

请求示例
curl -X POST https://pdfcheck.online/api/v1/pdf/to-markdown \
  -H "Accept: application/json" \
  -F "pdf=@document.pdf"

复制失败。请选中代码并手动复制。

令牌管理

通过 API 创建令牌需要已有令牌。请在账户中创建首个令牌。 管理API令牌

端点描述
GET /tokens列出已验证用户的所有API令牌。
POST /tokens创建新的API令牌。令牌仅在响应中显示一次。 name: string (max: 255)
DELETE /tokens/{tokenId}永久撤销(删除)API令牌。
请求示例
curl -X POST https://pdfcheck.online/api/v1/tokens \
  -H "Accept: application/json" \
  -H "Authorization: Bearer $PDFCHECK_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"My integration"}'

复制失败。请选中代码并手动复制。

错误代码

HTTP代码错误代码描述
401Unauthenticated.无效或缺少API令牌
404not_found资源未找到或访问被拒绝
422message / errors
corrupted_pdf
password_protected
analysis_failed
无效请求或 PDF 处理失败,例如不支持的文件、上传过大、PDF 损坏或密码保护
429daily_limit_exceeded
message
已超出每日或每分钟上限,请在对应额度重置后重试

代码示例

从 data.metadata.basic.pages 读取结果。所有响应片段均为示例。

Node.js 20 或更高版本;使用原生 fetch、FormData 和 Blob。

analyze-pdf.mjs
import { readFile } from 'node:fs/promises';

const form = new FormData();
form.append('file', new Blob([await readFile('document.pdf')], {
  type: 'application/pdf'
}), 'document.pdf');

const headers = { Accept: 'application/json' };
if (process.env.PDFCHECK_API_TOKEN) {
  headers.Authorization = `Bearer ${process.env.PDFCHECK_API_TOKEN}`;
}

const response = await fetch('https://pdfcheck.online/api/v1/pdf/analyze', {
  method: 'POST', headers, body: form
});
const result = await response.json();
if (!response.ok || !result.success) throw new Error(JSON.stringify(result));
console.log(result.data.metadata.basic.pages);
console.log(result.remaining_checks);

复制失败。请选中代码并手动复制。

Python (requests)
Python
import os
import requests

headers = {'Accept': 'application/json'}
if os.getenv('PDFCHECK_API_TOKEN'):
    headers['Authorization'] = f"Bearer {os.environ['PDFCHECK_API_TOKEN']}"

with open('document.pdf', 'rb') as pdf:
    response = requests.post(
        'https://pdfcheck.online/api/v1/pdf/analyze',
        headers=headers,
        files={'file': ('document.pdf', pdf, 'application/pdf')},
        timeout=120,
    )
response.raise_for_status()
result = response.json()
print(result['data']['metadata']['basic']['pages'])
print(result['remaining_checks'])

复制失败。请选中代码并手动复制。

PHP (cURL)
PHP
<?php
$headers = ['Accept: application/json'];
if ($token = getenv('PDFCHECK_API_TOKEN')) {
    $headers[] = 'Authorization: Bearer ' . $token;
}
$curl = curl_init('https://pdfcheck.online/api/v1/pdf/analyze');
curl_setopt_array($curl, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POSTFIELDS => ['file' => new CURLFile('document.pdf', 'application/pdf')],
]);
$body = curl_exec($curl);
if ($body === false) throw new RuntimeException(curl_error($curl));
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
$result = json_decode($body, true, flags: JSON_THROW_ON_ERROR);
if ($status >= 400 || !($result['success'] ?? false)) {
    throw new RuntimeException($body);
}
echo $result['data']['metadata']['basic']['pages'];

复制失败。请选中代码并手动复制。