Interex Document AIμ Upstage Document Parser λ λ¬Έμ νμ± APIμ μ±λ₯κ³Ό κ²°κ³Όλ₯Ό λΉκ΅ λΆμνλ μΉ κΈ°λ° λꡬμ λλ€.
- μ±λ₯ λΆμ: μ²λ¦¬ μκ°μ λ€νΈμν¬ λκΈ°μκ°κ³Ό μμ μ²λ¦¬μκ°μΌλ‘ λΆλ¦¬νμ¬ μΈ‘μ
- νμ± κ²°κ³Ό λΉκ΅: ν, μμ, μ΄λ―Έμ§ μΈμ κ²°κ³Όλ₯Ό μκ°μ μΌλ‘ λΉκ΅
- λ€μν μΆλ ₯ νμ: Text, HTML, JSON/Markdown νμμΌλ‘ κ²°κ³Ό νμΈ
- μ΄λ―Έμ§ λ λλ§: μΈμλ μ΄λ―Έμ§λ₯Ό μ€μ λ‘ νμ (Base64 μ§μ)
- μμ λ λλ§: LaTeX μμμ μλ¦λ΅κ² λ λλ§ (KaTeX μ¬μ©)
-
Interex Document AI (https://console.interxlab.io)
- Interexμ¬μ λ¬Έμ AI νμ± μ루μ
-
Upstage Document Parser (https://console.upstage.ai)
- Upstageμ¬μ λ¬Έμ νμ± API
parser-blackbox-analysis/
βββ backend/ # Node.js + Express λ°±μλ
β βββ server.js # λ©μΈ μλ² (API νλ‘μ)
β βββ uploads/ # μ
λ‘λλ νμΌ μμ μ μ₯
β βββ package.json
β
βββ frontend/ # React νλ‘ νΈμλ
βββ src/
β βββ components/
β β βββ ModelPanel.jsx # λͺ¨λΈλ³ λ
립 ν¨λ
β βββ App.jsx
β βββ index.css
βββ package.json
# λ°±μλ
cd backend
npm install
# νλ‘ νΈμλ (μ ν°λ―Έλ)
cd frontend
npm installcd backend
npm startβ http://localhost:5001 μμ μ€νλ©λλ€.
cd frontend
npm run devβ http://localhost:3000 μμ μ€νλ©λλ€.
- λΈλΌμ°μ μμ http://localhost:3000 μ μ
- μ’μΈ‘ ν¨λ (Interex)
- API ν€ μ λ ₯ β μ μ₯
- λ¬Έμ νμΌ μ λ‘λ
- μ€ν λ²νΌ ν΄λ¦
- μ°μΈ‘ ν¨λ (Upstage)
- API ν€ μ λ ₯ β μ μ₯
- λ¬Έμ νμΌ μ λ‘λ
- μ€ν λ²νΌ ν΄λ¦
- κ²°κ³Ό λΉκ΅ λ° λΆμ
κ° APIμ μ²λ¦¬ μκ°μ λ€μκ³Ό κ°μ΄ λΆμν©λλ€:
- μ΄ μμμκ°: μμ² μ μ‘λΆν° μλ΅ μμ κΉμ§ μ 체 μκ°
- λ€νΈμν¬ λκΈ°μκ° (Latency): λ€νΈμν¬ ν΅μ μ μμλ μκ°
- μμ μ²λ¦¬μκ° (Processing): μλ²μμ μ€μ λ¬Έμ μ²λ¦¬μ μμλ μκ°
μ΄ μμμκ° = λ€νΈμν¬ λκΈ°μκ° + μμ μ²λ¦¬μκ°
λ¬Έμμμ μΈμλ μμλ€μ μΉ΄ν κ³ λ¦¬λ³λ‘ λΆλ₯νμ¬ νμ:
- μΈμλ νμ κ°μ νμ
- HTML λ λλ§μΌλ‘ ν ꡬ쑰 μκ°ν
- ν μ€νΈ ννλ‘λ νμΈ κ°λ₯
- LaTeX μ½λμ λ λλ§λ μμμ λμμ νμ
- KaTeX λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν μλ¦λ€μ΄ μν νν
- μλ³Έ ν μ€νΈλ ν¨κ» μ 곡
- Base64 μΈμ½λ©λ μ΄λ―Έμ§λ₯Ό μ€μ μ΄λ―Έμ§λ‘ νμ
- μ’ν μ 보 (coordinates) μ 곡
- μ΄λ―Έμ§ λ©νλ°μ΄ν° νμΈ κ°λ₯
κ° νμμ κ²°κ³Όλ₯Ό μΈ κ°μ§ νμΌλ‘ νμΈ:
- Text: μμ ν μ€νΈ μΆμΆ κ²°κ³Ό
- HTML: HTML νμμΌλ‘ ꡬ쑰νλ κ²°κ³Ό
- JSON / Markdown:
- Interex: JSON νμ
- Upstage: Markdown νμ
κ° APIμ μλ³Έ μλ΅(Raw Response)μ JSON ννλ‘ νμΈ κ°λ₯νμ¬ λλ²κΉ λ° μμΈ λΆμμ νμ©ν μ μμ΅λλ€.
- Node.js - μλ² λ°νμ
- Express - μΉ νλ μμν¬
- Multer - νμΌ μ λ‘λ μ²λ¦¬
- Axios - HTTP ν΄λΌμ΄μΈνΈ
- Form-Data - Multipart form λ°μ΄ν° μμ±
- React 18 - UI λΌμ΄λΈλ¬λ¦¬
- Vite - λΉλ λꡬ λ° κ°λ° μλ²
- Axios - HTTP ν΄λΌμ΄μΈνΈ
- KaTeX - LaTeX μμ λ λλ§
API ν€ μ μ₯
{
"interexKey": "your-interex-api-key",
"upstageKey": "your-upstage-api-key"
}API ν€ μ€μ μν νμΈ
{
"interexKeySet": true,
"upstageKeySet": true
}Interex Document AI νΈμΆ
- Content-Type:
multipart/form-data - Field:
document(file) - Returns: νμ± κ²°κ³Ό λ° μκ° λΆμ λ°μ΄ν°
Upstage Document Parser νΈμΆ
- Content-Type:
multipart/form-data - Field:
document(file) - Returns: νμ± κ²°κ³Ό λ° μκ° λΆμ λ°μ΄ν°
{
"filename": "document.pdf",
"result": {
"success": true,
"extractedText": "...",
"extractedHtml": "...",
"extractedJson": "...",
"structuredData": {...},
"totalTime": 3542,
"networkLatency": 125,
"serverProcessingTime": 3417,
"rawResponse": {...}
}
}{
"filename": "document.pdf",
"result": {
"success": false,
"error": "Error message",
"errorDetails": {...},
"totalTime": 120000
}
}- μ΄λ―Έμ§ (JPG, PNG λ±)
- Office λ¬Έμ (DOC, DOCX, XLS, XLSX)
- μ΄λ―Έμ§ (JPG, PNG λ±)
- Office λ¬Έμ (DOC, DOCX, XLS, XLSX)
- νλ‘ νΈμλλ Vite HMR μ§μμΌλ‘ μ½λ μμ μ μλ λ°μ
- λ°±μλλ μμ ν μλ² μ¬μμ νμ
- API ν€λ λ©λͺ¨λ¦¬μλ§ μ μ₯ (μλ² μ¬μμ μ μ¬μ λ ₯ νμ)
- 보μμ μν΄ νκ²½ λ³μ μ¬μ© κΆμ₯
- λ°±μλ μ½μμμ μμΈν API μλ΅ λ‘κ·Έ νμΈ
- λΈλΌμ°μ κ°λ°μ λꡬ μ½μμμ νλ‘ νΈμλ λ‘κ·Έ νμΈ
- λ€νΈμν¬ νμμ API νΈμΆ λ΄μ νμΈ
- Layout Analysis λ¨κ³μμ κ°νμ μ°κ²° μ€λ₯ λ°μ κ°λ₯
- HTTP 200 μν μ½λλ‘ μλ¬ μλ΅μ λ°ννλ κ²½μ° μμ
- API ν€κ° μ¬λ°λ₯Έμ§ νμΈ
- νμΌ ν¬κΈ°/νμ μ ν νμΈ
- μ μ ν μ¬μλ
- API ν€ μνΈν μ μ₯
- κ²°κ³Ό μ μ₯ λ° νμ€ν 리 κΈ°λ₯
- μ¬λ¬ νμΌ λμ λΉκ΅
- ν μ€νΈ μΌμ΄μ€ κ΄λ¦¬
- μ±λ₯ λ²€μΉλ§ν¬ ν΅κ³
MIT License
νλ‘μ νΈ κ΄λ ¨ λ¬Έμμ¬νμ΄λ λ²κ·Έ 리ν¬νΈλ μ΄μ νμ΄μ§λ₯Ό μ΄μ©ν΄μ£ΌμΈμ.