文档伪造检测 API
面向 PDF 和 Word 文件的文档伪造检测 API。
- 接口
- POST /v1/files, POST /v1/analyses
- 模型
- fvdoc-3 · FVDOC V3
- 支持的文件
- PDF, DOCX, DOC, RTF, ODT, PPTX, TXT
- 大小上限
- 最大 50 MB,最多 100 页
- 获取结果
- 在同一次请求中等待,或通过 Webhook 接收
- 价格
- 每次文档检测 5.99美元
最近更新
检测内容
文档检测会检查什么。
每个信号都属于您在控制台中看到的同一份报告。“响应字段”一列告诉您去哪里读取。
| 信号 | 检查内容 | 响应字段 |
|---|---|---|
| 编辑历史与文件结构 | 已保存的修订版本、被改动和新增的页面,以及文件的构成方式。 | structure |
| 签名与文件记录 | 数字签名、创建和修改记录,以及文件中注明的软件。 | provenance |
| 内嵌照片 | 文档内的照片,逐张检查是否为 AI 生成及是否有局部编辑。 | images |
| AI 撰写的文本 | 对文档文本的判定,并按页标出由 AI 撰写的段落。 | text |
| 发现与下一步 | 支撑风险等级的各项发现、每项发现的强度,以及建议措施。 | findings, level, action |
请求与响应
两次调用,一份报告。
先上传文件,再使用模型 fvdoc-3 创建检测。发送 Prefer: wait 可让请求一直保持到报告就绪。文档可能需要排队,因此检测可能返回 202 和状态 processing,您可以稍后获取,或通过 Webhook 接收。
FILE_ID=$(curl -s https://api.fileverity.com/v1/files \ -H "Authorization: Bearer $FILEVERITY_API_KEY" \ -F file=@contract.pdf | jq -r .id) curl https://api.fileverity.com/v1/analyses \ -H "Authorization: Bearer $FILEVERITY_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Prefer: wait=60" \ -d "{\"model\": \"fvdoc-3\", \"file\": \"$FILE_ID\"}"import { readFile } from "node:fs/promises"; const headers = { Authorization: "Bearer " + process.env.FILEVERITY_API_KEY }; const form = new FormData();form.append("file", new Blob([await readFile("contract.pdf")], { type: "application/pdf" }), "contract.pdf");const file = await (await fetch("https://api.fileverity.com/v1/files", { method: "POST", headers, body: form })).json(); const response = await fetch("https://api.fileverity.com/v1/analyses", { method: "POST", headers: { ...headers, "Content-Type": "application/json", "Idempotency-Key": crypto.randomUUID(), Prefer: "wait=60" }, body: JSON.stringify({ model: "fvdoc-3", file: file.id }),});const analysis = await response.json();console.log(analysis.status, analysis.summary, analysis.report_url);import osimport uuidimport requests headers = {"Authorization": "Bearer " + os.environ["FILEVERITY_API_KEY"]} file = requests.post("https://api.fileverity.com/v1/files", headers=headers, files={"file": open("contract.pdf", "rb")}).json() response = requests.post( "https://api.fileverity.com/v1/analyses", headers={**headers, "Idempotency-Key": str(uuid.uuid4()), "Prefer": "wait=60"}, json={"model": "fvdoc-3", "file": file["id"]},)analysis = response.json()print(analysis["status"], analysis["summary"], analysis["report_url"]){ "id": "an_Zc4vB7nP1sK8tL3wR6yQm2Xa", "object": "analysis", "created": 1793700300, "model": "fvdoc-3-2026-11-03", "livemode": true, "status": "succeeded", "file": { "name": "contract.pdf", "bytes": 18874368, "format": "pdf" }, "report_id": "FV-3PXH-6WQ2-8NDC", "report_url": "https://fileverity.com/verify/FV-3PXH-6WQ2-8NDC", "summary": { "kind": "docpro", "level": "L3", "action": "review", "reason": null, "findings": [], "pages": 12, "images": 3, "text": "human" }, "result": { "report": { "schema": "fileverity.docpro/1", "id": "FV-3PXH-6WQ2-8NDC" }, "stamped_at": 1793700340 }, "error": null, "progress": null, "usage": { "amount": 599, "currency": "usd", "funding": "balance" }, "metadata": null, "completed_at": 1793700341, "expires_at": 1794305141}适用场景
放在文件变成决策的环节。
API 返回风险等级和建议措施,最终决定仍由您的审核人员做出。
信贷与收入证明
- 您提交
- 申请材料中的工资单、银行对账单和雇主证明信。
- 您得到
- 风险等级、建议措施和支撑它们的发现,并注明涉及的页码。
- 之后由您的团队
- 需要进一步查看的文件,连同报告转交信贷审核人员。
保险理赔
- 您提交
- 随理赔提交的发票、维修估价单、收据和声明。
- 您得到
- 关于编辑痕迹、内嵌照片和 AI 撰写段落的发现,以及可存入理赔档案的报告编号。
- 之后由您的团队
- 把报告编号附在理赔上;发现提示有问题时,向索赔人索取原始文档。
应付账款与发票
- 您提交
- 付款批次之前的供应商发票,以及变更银行账户信息的函件。
- 您得到
- 编辑历史、文件记录,以及文件创建之后发生过改动时的相应发现。
- 之后由您的团队
- 付款前,向供应商确认被改动的金额或收款方信息。
供应商、租户与员工入职
- 您提交
- 证书、文凭、推荐信和地址证明。
- 您得到
- 针对文件本身的报告:编辑痕迹、签名、内嵌照片和 AI 撰写的文本。
- 之后由您的团队
- 报告建议复核时,向出具方核实该凭证。
局限
它不做什么。
没有问题的结果可以缩小复核范围,但不能取代复核。
- 它不读取身份证件,不做人脸比对,也不做活体检测。请与身份核验服务商配合使用。
- 没有发现问题,并不证明文档是真实的,也不证明其内容属实。
- 它检查的是文件,而不是事实。它无法确认金额、收款方或出具方是否正确,这些仍需向源头核实。
- 有些内容无法检查,例如没有文本的扫描页或非常短的段落。报告会说明哪些内容未被检查。
- 文档的照片和截图属于图片,而不是文档。请改用图片检测 API。
证据
可以留存的证据。
每次检测留下的不只是一个结论,还有一份可以保存、分享并在日后再次核验的记录。
报告编号
格式为 FV-XXXX-XXXX-XXXX 的报告编号。请与您自己的案件或客户记录一并保存。
指纹与时间戳
每份报告都会记录文件与报告的 SHA-256 指纹,以及 RFC 3161 时间戳。
公开核验页
收到报告编号的人无需账号,即可在核验页确认报告。
文件删除,结果保留
上传的文件在检测后删除,也不会用于训练模型。结果可通过 API 再次获取,保留 7 天。
集成
把它接入您的工作流程。
图片检测和文档检测遵循相同的模式,一次集成即可覆盖两者。
- 使用 Prefer: wait 等待结果,或在检测完成时接收带签名的 Webhook。请同时处理“已完成”和“处理中”两种响应。
- 每个 POST 请求都发送 Idempotency-Key,这样重试永远不会让同一次检测运行两次。
- 先用 fv_test_ 密钥开发。它们返回固定的示例结果,永不扣费。
- 失败的检测不收费。服务繁忙时返回 503 和 retry-after 响应头,您用同一个密钥重试即可。
- Webhook 带有签名,遵循 Standard Webhooks 规范。
- 不超过 4 MB 的文件可在一次 multipart 请求中上传,更大的文件使用预签名上传 URL,上限取决于模型。
- 每个密钥每分钟最多 120 次请求。
价格
按每次检测付费。
同一份预付的工作区余额即可用于图片、文档和文本检测。从 19美元 起充值。无需订阅,不会自动续费。
常见问题
如何通过 API 检测被伪造的 PDF?
用 POST /v1/files 上传 PDF,再用 POST /v1/analyses 和模型 fvdoc-3 创建检测。响应包含来自编辑历史、签名、内嵌照片和文本的发现、风险等级和建议措施,以及任何人都能核验的报告编号。
能检测 AI 生成的文档吗?
它检测 AI 撰写的文本:检测会按页标出由 AI 撰写的段落,并在文本无法评估时说明,例如没有文本的扫描页。它还会检查内嵌照片是否为 AI 生成。请把结果当作供复核的证据,而不是定论。
它能核验身份证或护照吗?
不能。它不读取身份证件,不做人脸比对,也不做活体检测。它检查的是文档文件,而不是出示文件的人,因此请与身份核验服务商配合使用。
一次文档检测多少钱?
每次文档检测 5.99美元,从您的预付工作区余额中扣除,余额从 19美元 起充值。无需订阅。失败的检测不收费,测试密钥永不扣费。
有免费额度和测试模式吗?
您的第一个工作区包含 5 次免费图片或文档检测,以及 5,000 个免费文本字符,无需绑卡。免费额度每人一次,每个企业邮箱域名的次数有限。以 fv_test_ 开头的密钥返回固定的示例结果,永不扣费。
支持哪些文件格式和大小?
支持的格式:PDF, DOCX, DOC, RTF, ODT, PPTX, TXT。每个文件的上限为 50 MB 和 100 页。不超过 4 MB 的文件可在一次 multipart 请求中上传,更大的文件使用预签名上传 URL。文档的 JPEG、PNG 或 WebP 照片则按图片检测处理。
文件和结果保存多久?
上传的文件在检测后删除。结果保留 7 天,方便您再次获取;公开核验页可以确认报告编号、文件指纹和时间戳。
实务指南
写给复核团队的实务指南。
每项检查能证明什么、止于何处、下一步该索取哪份证据。
文档与票据
如何识别 AI 伪造文件:按问题选择核查方法
AI 撰写的说明材料、生成的单据页面、被改动的字段、被挪作他用的真实文件,需要不同的证据。按问题匹配文字来源检测、文件比对与出具方核实。
17 分钟阅读 ·
文档与票据
如何判断 PDF 或 OFD 文件有没有被修改:验签、比对与核查
核查 PDF 与 OFD 文件是否被改动:取得可信对照件,验证电子签名或电子签章,区分文件属性日期与系统日期,逐项比对金额与收款信息。
17 分钟阅读 ·
文档与票据
对公付款前如何核验发票与收款账户:金额、重复支付与账户变更
付款前逐项核对合同、入库验收与数电发票,排查重复支付,经独立渠道核实收款账户变更,防范冒充供应商诈骗。附人民币案例与审批记录。
19 分钟阅读 ·
检测评估
如何选择 AI 检测 API:集成前要核查的十件事
选择 AI 检测 API 前的核查清单:输入限制、同步与异步结果、Webhook、审计证据、数据留存、测试模式与计费。
20 分钟阅读 ·