เริ่มต้นใช้งาน
แพ็กเกจ @ocriva/sdk มี TypeScript client ที่มี type ครบถ้วนสำหรับ Ocriva API คู่มือนี้จะพาคุณผ่านขั้นตอนการติดตั้ง การตั้งค่าเริ่มต้น และการอัปโหลดครั้งแรก
ข้อกำหนดเบื้องต้น
- Node.js >= 18 — SDK ใช้ native
fetchAPI ที่มีมาตั้งแต่ Node 18+ - TypeScript >= 5.0 (แนะนำ) — จำเป็นสำหรับการใช้งาน type definition ได้อย่างเต็มประสิทธิภาพ
การติดตั้ง
ติดตั้ง SDK ด้วย package manager ที่คุณต้องการ:
# npm
npm install @ocriva/sdk
# pnpm
pnpm add @ocriva/sdk
# yarn
yarn add @ocriva/sdkการขอ API Key
API key สร้างได้จาก Ocriva Dashboard:
- เข้าสู่ระบบที่ ocriva.com
- ไปที่ Settings → API Tokens
- คลิก Create Token แล้วเลือก scope (organization หรือ project)
- คัดลอก token — token จะไม่แสดงอีกครั้ง
ดูรายละเอียดเรื่องประเภท token และ scope ได้ที่ Authentication
Quick Start
ตัวอย่างต่อไปนี้แสดง workflow ที่ใช้บ่อยที่สุด ได้แก่ สร้าง client, อัปโหลดไฟล์, poll จนกว่าการประมวลผลจะเสร็จ แล้วดาวน์โหลดผลลัพธ์
import { OcrivaClient } from '@ocriva/sdk';
import { readFileSync } from 'node:fs';
const client = new OcrivaClient({
apiKey: process.env.OCRIVA_API_KEY!,
});
// 1. Read a local file into a Buffer
const buffer = readFileSync('./invoice.pdf');
// 2. Upload the file for OCR processing
const upload = await client.upload.file(buffer, {
fileName: 'invoice.pdf',
fileType: 'pdf',
fileSize: String(buffer.byteLength),
mimeType: 'application/pdf',
projectId: 'proj_abc123',
templateId: 'tmpl_xyz789', // optional — apply an extraction template
});
console.log('Upload ID:', upload.id);
console.log('Status:', upload.status); // 'uploaded' | 'processing' | ...
// 3. Poll processing history until the job finishes
let record = await client.processingHistory.get(upload.id, 'proj_abc123');
while (record.status === 'pending' || record.status === 'queued' || record.status === 'in_progress') {
await new Promise((resolve) => setTimeout(resolve, 2000));
record = await client.processingHistory.get(upload.id, 'proj_abc123');
}
if (record.status === 'completed') {
// 4. Download the extracted result as JSON
const blob = await client.processingHistory.getResult(record.id, {
format: 'json',
projectId: 'proj_abc123',
});
const text = await blob.text();
console.log('Extracted data:', JSON.parse(text));
} else {
console.error('Processing failed:', record.errorMessage);
}การตั้งค่า
ส่ง configuration object ให้ OcrivaClient โดยจำเป็นต้องมีเพียง apiKey เท่านั้น ส่วน option อื่น ๆ มีค่าเริ่มต้นที่เหมาะสมแล้ว
import { OcrivaClient } from '@ocriva/sdk';
const client = new OcrivaClient({
apiKey: 'ocr_live_...', // required
baseUrl: 'https://api.ocriva.com/v1', // default
timeout: 30_000, // 30 s, in milliseconds
maxRetries: 3, // retries on 429 and 5xx responses
});Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
apiKey | string | — | จำเป็น. Ocriva API key ของคุณ |
baseUrl | string | https://api.ocriva.com/v1 | Base URL ของ API |
timeout | number | 30000 | timeout ของ request ในหน่วยมิลลิวินาที |
maxRetries | number | 3 | จำนวนครั้งสูงสุดในการ retry เมื่อเกิดความล้มเหลวชั่วคราว (429, 5xx) |
apiKey ต้องเป็น string ที่ไม่ว่างเปล่า มิฉะนั้น constructor จะ throw OcrivaError ทันที หากระบุ baseUrl ต้องเป็น URL ที่ถูกต้องและมี scheme (เช่น https://)
