在 .NET 中对 PDF 文件进行分类对于自动化文档工作流、提取洞察以及在无需人工审查的情况下路由内容至关重要。GroupDocs.Classification Cloud SDK for .NET 提供了强大的 API,使 PDF 分类变得简单且可扩展。在本教程中,您将学习完整的 PDF 分类工作流,包括项目设置和分类法配置、批处理、扫描 PDF 的 OCR 处理以及性能调优,并提供可直接运行的代码示例。
在 .NET 中对 PDF 文件进行分类的步骤
- 添加 NuGet 包 - 运行
dotnet add package GroupDocs.Classification-Cloud将库添加到项目中。 - 创建并配置 API 客户端 - 使用您的 client ID 和 secret 初始化
ClassificationApi。 - 上传 PDF - 使用
UploadFile接口将文档发送到云存储。 - 定义分类法 - 提供一个指向 JSON 文件,该文件将类别映射到关键字;这将指导分类引擎。
- 调用分类方法 - 使用文件 ID、分类法以及可选的置信阈值调用
ClassifyDocument。 - 处理结果 - 遍历
ClassificationResult对象,检查Confidence属性以过滤低置信度标签。
有关请求对象的更多详细信息,请参阅 API 参考。
在 .NET 中高效分类 PDF 文件 - 完整代码示例
以下示例演示了对单个 PDF 文件进行完整的端到端分类,包括错误处理和结果处理。
注意: 此代码示例演示了核心功能。在将其用于项目之前,请确保更新文件路径(
sample.pdf、taxonomy.json),将占位符凭据替换为实际的YOUR_CLIENT_ID和YOUR_CLIENT_SECRET,并在开发环境中彻底测试。如果遇到任何问题,请参阅官方文档或联系支持团队获取帮助。
使用 cURL 的 REST API 进行 PDF 分类
SDK 基于 REST API 运行,因此您也可以直接使用 cURL 调用它。以下是典型步骤。
- 获取访问令牌
curl -X POST "https://api.groupdocs.cloud/v1.0/oauth2/token" \
-H "Content-Type: application/json" \
-d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_CLIENT_SECRET","grant_type":"client_credentials"}'
- 上传 PDF 文件
curl -X POST "https://api.groupdocs.cloud/v1.0/storage/file/upload" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@sample.pdf"
- 对文档进行分类
curl -X POST "https://api.groupdocs.cloud/v1.0/classification/classify" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fileId": "sample.pdf",
"taxonomy": "{\"categories\":[{\"name\":\"Invoice\",\"keywords\":[\"amount\",\"total\",\"invoice\"]}]}",
"confidenceThreshold": 0.6
}'
- 下载结果(如果需要) - API 直接返回 JSON;您可以将其管道输出到文件。
欲了解更多详情,请参阅官方 API 文档。
.NET 中的安装和设置
- 安装 NuGet 包
dotnet add package GroupDocs.Classification-Cloud - 从发布页面下载最新的二进制文件(可选)。
- 添加临时许可证(仅用于开发),方法是复制许可证文件并按照代码示例初始化
Configuration对象。 - 验证连接 - 运行一个简单的
GetSupportedFileTypes调用,以确保客户端能够访问服务。
使用 GroupDocs.Classification Cloud SDK 在 .NET 中进行 PDF 分类
该 SDK 抽象了 HTTP 处理、序列化和错误映射,使您能够专注于业务逻辑。它支持:
- Multiple languages - API 与语言无关;.NET 客户端遵循相同的契约。
- Taxonomy‑driven classification - 您只需定义一次类别,即可在多个项目中重复使用。
- Confidence scoring - 每个标签都包含置信度值,可实现基于阈值的过滤。
了解这些功能有助于您设计一个强大的 PDF 分类工作流。
GroupDocs.Classification Cloud SDK 对此任务重要的功能
- Batch processing - 在单个请求中对数千个 PDF 进行分类。
- OCR integration - 在分类之前自动从扫描的 PDF 中提取文本。
- Custom taxonomy support - 上传 JSON 或 XML 分类法以匹配您的领域。
- Detailed logging - 检索请求 ID 以进行故障排除和审计跟踪。
配置分类层次结构和置信阈值
创建一个描述您类别的 taxonomy.json 文件:
{
"categories": [
{
"name": "Invoice",
"keywords": ["invoice", "amount", "total", "due"]
},
{
"name": "Resume",
"keywords": ["experience", "education", "skills", "profile"]
}
]
}
在构建 ClassifyDocumentRequest 时,设置 ConfidenceThreshold 属性(例如 0.6),以过滤不确定的预测。根据您所在领域对误报的容忍度调整此值。
大批量 PDF 的性能优化
- 将批次分块 - 将大型集合拆分为每组 100‑200 个文件,以避免超时。
- 启用异步处理 - 使用
SubmitJob接口并轮询GetJobStatus以释放线程。 - 复用相同的分类法 - 只加载一次分类法,并在所有请求中复用相同的 JSON 字符串。
- 并行上传 - 使用
Task.WhenAll并发上传文件,以降低网络延迟。
| 场景 | 推荐方法 |
|---|---|
| < 100 PDFs | 同步单请求 |
| 100‑1,000 PDFs | 分块同步批处理 |
| > 1,000 PDFs | 异步作业提交 + 轮询 |
处理扫描的 PDF 和 OCR 集成
扫描的文档包含图像而不是可选择的文本。要对它们进行分类:
- 将请求中的
ocr标志设置为true。 - 可选地指定
ocrLanguage(例如,英文使用"en")。 - 服务在应用分类规则之前内部运行 OCR。
此两步流程确保仅包含图像的 PDF 在分类时被视为与原生 PDF 相同。
常见分类错误排查
- 401 Unauthorized - 验证
ClientId和ClientSecret是否正确,并且令牌请求已成功。 - 400 Bad Request (Invalid Taxonomy) - 确保 taxonomy JSON 格式正确;缺少括号会导致此错误。
- 404 Not Found (File ID) - 确认文件已成功上传且
fileId与存储路径匹配。 - Low confidence scores - 检查 taxonomy 关键字;添加更具代表性的术语或扩大训练集。
有关错误代码的完整列表,请查阅 API reference。
.NET 中 PDF 分类的最佳实践
- 保持分类法小且专注 - 过多重叠的关键字会降低准确性。
- 使用带版本的分类法文件 - 将它们存储在源代码控制中以跟踪更改。
- 设置适当的置信阈值 - 从
0.6开始,并根据验证结果进行调整。 - 监控作业状态 - 记录请求 ID 和响应时间以进行性能分析。
- 保护凭据 - 将
ClientId和ClientSecret存储在环境变量或 Azure Key Vault 中。
结论
在 .NET 中对 PDF 文件进行分类变得简单,只需使用 GroupDocs.Classification Cloud SDK for .NET。按照上述步骤设置 SDK、定义清晰的分类体系、处理扫描 PDF 的 OCR,并优化批处理性能,您即可构建可靠、可扩展的分类服务,满足任何文档密集型应用的需求。请记得获取正式的生产许可证;您可以先从临时许可证页面获取临时许可证,并在需求增长时升级为完整订阅。
常见问题
问:如何在 .NET 中以高置信度对 PDF 文件进行分类?
答:在请求中设置 ConfidenceThreshold 以过滤低置信度的结果。SDK 为每个标签返回置信度分数,您可以仅保留高于所选阈值的预测。请参阅官方文档了解更多细节。
Q: SDK 是否支持对扫描的 PDF 进行 OCR?
A: 是的。通过在分类请求中设置 ocr 标志来启用 OCR。服务在应用分类法之前会从基于图像的 PDF 中提取文本,从而提高扫描文档的准确性。
Q: 处理成千上万的 PDF 的最佳方法是什么?
A: 使用批量分类和异步作业。将大型集合拆分为可管理的块,通过 SubmitJob 提交,并轮询 GetJobStatus 直至完成。这种方法可避免超时并最大化吞吐量。
问:我在哪里可以获取用于开发的临时许可证?
A: 访问临时许可证页面以生成 30 天的许可证密钥。在进行 API 调用之前,将其应用于您的 Configuration。
