자동 필수항목 추출 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 키만 있으면 됩니다. 요청 본문은 file 필드가 포함된 multipart/form-data로 전송됩니다.
핵심 매개변수
- 처리 타임아웃: 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);
중요한 사항
- 체크섬을 통한 검증: 유효하지 않은 INN/OGRN 체크섬 데이터는 반환되지 않습니다
- 타임아웃: 복잡한 문서의 경우 최소 120초 간격으로 설정하세요
- 제한사항: 텍스트 형식만 지원되며, 스캔 문서는 사전 OCR 처리가 필요합니다
- 1C 통합: 수동 multipart 요청 생성으로 구현
- 최대 크기: 20 MB 초과 파일은 413 코드로 거부
오류 처리 및 모니터링
시스템은 실패 처리에 결합 접근 방식을 사용합니다. 각 오류 유형에 대해 특정 HTTP 코드와 응답 본문의 텍스트 설명이 제공됩니다.
중요 시나리오:
- 408 Request Timeout: 타임아웃을 120초로 늘리세요
- 413 Payload Too Large: 문서를 부분으로 나누세요
- 401 Unauthorized: API 키 유효성을 확인하세요
- 500 Internal Error: 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
아직 댓글이 없습니다.