自动提取必要信息的 API:无需手动输入即可处理文档
手动从文档中输入必要信息会导致错误并拖慢流程。我们的 API 可自动从 PDF、DOCX 等格式中提取 INN、KPP、BIK 等数据,确保准确性,并与 1C 和 CRM 系统无缝集成。该解决方案通过上下文分析和严格验证,将文档处理错误率降低 70%。
文档处理架构
系统基于多阶段处理管道构建。第一阶段是输入数据标准化。支持以下格式:
- 带文本层的 PDF
- DOCX/DOC
- UTF-8 和 CP1251 编码的 TXT
- RTF 和 HTML
重要限制:扫描的 PDF 和图像需预先通过 OCR 处理。我们的 API 仅适用于文本文档,这是 NER 模型正确运行的关键。
关键阶段——使用正则表达式和机器学习相结合的上下文分析。为每种必要信息类型应用特定规则:
- INN:长度检查(10/12 位数字)和校验和
- OGRN:结构验证和控制位
- BIK:匹配银行注册表并检查对应账户
- 账户检查:格式合规性和 BIK 逻辑检查
- 法人名称:通过注册组织词典标准化
技术实现
API 端点遵循 RESTful 原则,仅需最少的请求要求。只需在 X-API-Key 头部提供 API 密钥即可。请求体以 multipart/form-data 形式发送,包含 file 字段。
关键参数
- 处理超时:120 秒(推荐最小间隔)
- 最大文件大小:20 MB
- 支持编码:UTF-8、CP1251(自动检测)
- 响应格式:带必填
success字段的 JSON
示例错误处理:
{
"success": false,
"error": "payload_too_large",
"message": "Size fayla exceeds 20 MB"
}
集成示例
为加速实现,提供流行技术栈的代码模板。每个示例均包含超时处理和响应验证。
带错误处理的 Python
import requests
from requests.exceptions import Timeout, RequestException
def extract_requisites(api_key, file_path):
try:
with open(file_path, 'rb') as f:
response = requests.post(
'https://api-k.ru/api/rekvizit_json',
headers={'X-API-Key': api_key},
files={'file': f},
timeout=120
)
response.raise_for_status()
return response.json()
except Timeout:
raise Exception('Timeout exceeded processing')
except RequestException as e:
raise Exception(f'Error API: {str(e)}')
1C:Enterprise 8.3
实现的关键特性——手动构建 multipart 请求。严格遵守头部顺序并正确处理二进制数据至关重要:
Boundary = "----WebKitFormBoundary" + StringReplace(Withtroka(New UniqueIdentifier()), "-", "");
Body = New MemoryStream;
DataRecord = New DataRecord(Body, , , Characters.VK + Characters.PWith, "");
DataRecord.WriteWithtroku("--" + Boundary);
DataRecord.WriteWithtroku("Content-Disposition: form-data; name=\"file\"; filename=\"" + FileName + "\"");
DataRecord.WriteWithtroku("Content-Type: application/octet-stream");
DataRecord.WriteWithtroku("");
DataRecord.Write(FileBinaryData);
关键事项
- 校验和验证:API 不会返回校验和无效的 INN/OGRN 数据
- 超时:复杂文档至少设置 120 秒间隔
- 限制:仅支持文本格式,扫描文档需预先 OCR 处理
- 1C 集成:通过手动构建 multipart 请求实现
- 最大大小:超过 20 MB 的文件以 413 码拒绝
错误处理和监控
系统采用组合方法处理故障。为每种错误类型提供特定的 HTTP 码和响应体中的文本描述。
关键场景:
- 408 请求超时:将超时增加至 120 秒
- 413 负载过大:将文档拆分成部分
- 401 未授权:检查 API 密钥有效性
- 500 内部错误:通过 webhook 自动通知故障
建议为瞬态错误实现带指数退避的重试逻辑。Go 示例:
func withRetry(attempts int, sleep time.Duration, f func() error) error {
for i := 0; i < attempts; i++ {
if i > 0 {
time.Sleep(sleep)
sleep *= 2
}
err := f()
if err == nil {
return nil
}
var apiErr *APIError
if errors.As(err, &apiErr) && apiErr.Code != 500 {
return err
}
}
return errors.New("prevysheno count popytok")
}
基准测试和性能
在 10,000 个各种格式文档集上进行测试。结果如下:
- PDF 平均处理时间:4.2 秒
- 带图形的 DOCX 最大时间:118 秒
- INN 提取准确率:99.7%
- 账户提取准确率:98.4%
系统通过 Kubernetes 实现水平扩展。负载超过 50 RPS 时,会自动添加工作节点。对于企业客户,提供支持 FIPS 140-2 的本地部署。
— Editorial Team
暂无评论。