
Helpy Document Vision은 비정형 문서(PDF, PPT, 이미지 등)를 기계가 완벽하게 이해할 수 있는 구조화된 JSON 데이터로 변환하는 고정밀 문서 파싱 파이프라인입니다.
단순히 텍스트만 추출하는 기존 OCR과 달리, 이 모델은 통합 레이아웃 분석을 통해 문서의 자연스러운 읽기 순서를 파악하고 단락, 표, 차트, 수식, 이미지 등 각 요소를 자동으로 식별하여 최적의 형태로 변환합니다. 특히 RAG (Retrieval-Augmented Generation) 시스템이나 AI 에이전트가 문서를 정확히 참조할 수 있도록 설계되었습니다.
eliceai/helpy-document-vision이 모델은 단순 전사를 넘어, 문서 내 요소의 성격에 따라 가장 적합한 데이터 포맷으로 변환합니다.
API 요청 시 multipart/form-data 형식을 사용합니다.
파라미터 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| File | Yes | 문서 파일 (PDF, 이미지, 또는 PPT). |
| String | Yes |
|
| JSON String | No | 추가 옵션 설정 (예: |
응답은 페이지별로 구분되며, 각 페이지는 식별된 요소(elements)의 리스트를 포함합니다.
bounding_box: 요소의 위치 좌표 [ymin, xmin, ymax, xmax]label: 요소의 유형 (text, table, chart, figure_title 등)content: 텍스트 전사 내용 (OCR 결과)description: 이미지에 대한 AI 설명 (Config 활성화 시)data: 표/차트의 HTML 변환 결과 또는 수식의 LaTeX 코드Helpy Document Vision은 대용량 문서를 처리하기 위해 비동기 작업 방식(Submit Job → Polling)을 사용합니다.
import json
import time
import requests
from pathlib import Path
# 설정 정보
BASE_URL = "YOUR_API_BASE_URL"
API_KEY = "YOUR_API_KEY"
INPUT_FILE = "path/to/your/document.pdf"
def process_document():
headers = {"Authorization": f"Bearer {API_KEY}"} if API_KEY else {}
file_path = Path(INPUT_FILE)
# 1. 작업 제출
print(f"Uploading {file_path.name}...")
with open(file_path, "rb") as f:
files = {"document": (file_path.name, f, None)}
# 이미지 설명 및 차트 변환 옵션 활성화
configs = json.dumps({
"do_image_description": True,
"do_chart_conversion": True,
"return_image": False
})
data = {
"model": "eliceai/helpy-document-vision",
"configs": configs,
}
resp = requests.post(f"{BASE_URL}/v1/documents", files=files, data=data, headers=headers)
resp.raise_for_status()
job_id = resp.json().get("job_id")
print(f"Job submitted successfully. ID: {job_id}")
# 2. 결과 폴링
while True:
job_resp = requests.get(f"{BASE_URL}/v1/jobs/{job_id}", headers=headers)
job_data = job_resp.json()
status = job_data.get("status")
if status == "succeeded":
print("Processing complete!")
return job_data.get("result")
elif status == "failed":
raise Exception(f"Processing failed: {job_data.get('error')}")
# 처리 중일 경우 대기
print("Processing...", end="\r")
time.sleep(2)
# 실행 및 결과 출력
try:
result = process_document()
print(json.dumps(result, indent=2, ensure_ascii=False))
except Exception as e:
print(e){
"page_count": 1,
"pages": [
{
"page": 1,
"elements": [
{
"bounding_box": [592.0, 552.0, 2296.0, 650.0],
"label": "text",
"content": "Task-oriented assistant that can also use tools (such as search or apps) to support lesson planning, project management, and organizing school or office work.",
"description": null,
"data": null
},
{
"bounding_box": [381.0, 2403.0, 1415.0, 3240.0],
"label": "chart",
"content": null,
"description": "정확도(%)와 압축률을 보여주는 막대 및 선 그래프...",
"data": "<table><thead><tr><th>Metric</th>...</table>"
}
]
}
]
}모델 제공자
EliceAI
모델 종류
Image Text To Text
사용 방식 및 요금
Serverless
Dedicated
인스턴스 사용 시간
모델 ID
eliceai/helpy-document-vision