2. Membaca dokumen (OCR)
Dari foto atau PDF menjadi data, dengan model AI pilihanmu.
Izin: documents:readdocuments:extractdocuments:deletedocuments:managedocuments:scan
- 1Toko
Toko membuat jenis dokumen di layarnya (misalnya "Nota belanja"), dengan kolom yang mau dibaca: nomor, tanggal, total, daftar barang.
- 2Toko
Opsional, dan paling ampuh untuk bacaan yang sering meleset: pengetahuan jenis dokumen itu, sampai 10.000 karakter. Misalnya singkatan yang dipakai pengirimnya, kolom mana yang berisi harga, cara tanggal ditulis. Toko bisa menulisnya di layarnya (Asisten AI → Jenis dokumen → jenisnya → "Pengetahuan untuk membaca dokumen ini"), atau kamu lewat API, langkah berikut. Setiap bacaan jenis itu membawanya.
- 3Sistemmu
GET /v1/document-types/{id}/knowledgeOpsional: lihat pengetahuannya dan sisa karakternya. Tambah dengan POST …/knowledge/entries ({"title", "content"}), ubah dengan PUT …/knowledge/entries/{entry}, hapus dengan DELETE (izin documents:manage). Gratis, tanpa AI.
- 4Sistemmu
POST /v1/document-types/{id}/knowledge/scans/imagesOpsional, berbayar (izin documents:scan): kirim contoh dokumennya, foto atau PDF, sampai 8 foto atau halaman, di bagian "images". AI mengusulkan pengetahuan; tanya GET …/knowledge/scans/{scan} sampai succeeded, lalu simpan yang kamu mau dengan POST …/scans/{scan}/accept ({"items": [...]}). Tidak ada yang tersimpan sebelum itu.
- 5Sistemmu
POST /v1/document-typesAtau buat sendiri lewat API (izin documents:manage): nama, kolom-kolomnya (key, description, type, isNullable; sebuah daftar dengan columns), model bila mau, dan "reportPages". Ubah dengan PUT /v1/document-types/{id} (semua kolom diganti; id tetap, bacaan lama tidak berubah), matikan atau nyalakan dengan PATCH {"isActive": false}.
- 6Sistemmu
GET /v1/document-typesAmbil jenis dokumen toko dan id-nya, beserta kolom-kolomnya.
- 7Sistemmu
GET /v1/document-types/modelsOpsional: daftar model yang bisa membaca, per vendor, dengan harga satu halaman dan apakah model itu membaca PDF utuh atau per halaman. Yang pertama adalah bawaan.
- 8Sistemmu
POST /v1/document-types/{id}/runs/estimateOpsional: kirim file yang sama untuk tahu biayanya tanpa membaca apa pun. "estimate" adalah bacaan biasa, "most" paling mahal yang mungkin; keduanya rupiah.
- 9Sistemmu
POST /v1/document-types/{id}/runsKirim file (multipart, kolom "file"), dan bila mau: "provider" dan "model" berdua; "pages" untuk membaca halaman tertentu saja dari PDF, misalnya 1-3,7; "maxCharge", batas biaya dalam rupiah (bacaan yang bisa lebih mahal ditolak 422 over_max_charge sebelum dibaca); dan "clientReference". Jawaban 202: bacaan berstatus pending, dengan id-nya.
- 10Tekomata
AI membaca di latar belakang. Selesai: webhook document_read.succeeded dengan runId. Gagal: document_read.failed dengan alasannya.
- 11Sistemmu
GET /v1/document-types/{id}/runs/{run}Ambil nilai-nilainya dan berapa yang ditagih. Setiap nilai membawa "value" persis seperti tercetak, "normalized" dalam satu bentuk baku sesuai jenis kolomnya ("Rp 16.650.000,00" jadi "16650000.00", "1 Oktober 2026" jadi "2026-10-01"), keyakinan model, serta "pages" dan "quote": semua halaman dan teks tempat nilai itu dibaca ("page" adalah halaman pertamanya; halaman di luar yang dikirim dibuang). "truncated" pada bacaan berarti sebuah daftar terpotong di batas barisnya.
- 12Sistemmu
DELETE /v1/document-types/{id}/runs/{run}Opsional: hapus bacaan beserta filenya setelah datanya kamu simpan. Biayanya tetap tercatat. Atau atur penghapusan otomatis: PUT /v1/document-types/retention dengan {"days": 30}.
- Foto JPG, PNG, GIF, atau WebP sampai 5 MB; PDF sampai 20 MB. Halaman per dokumen paling banyak sesuai batas toko: 50 kalau tidak diubah, sampai 500 lewat PUT /v1/document-types/limits. Model yang membaca PDF utuh ("readsPdf") menerima PDF sampai 100 halaman dalam satu panggilan bila "pages" tidak dikirim. Selain itu PDF dibaca sebagai gambar per bagian 50 halaman (20 untuk jenis dengan daftar) lalu digabung: nilai tunggal dari bagian yang paling yakin, baris daftar berurutan. Tiap bagian ditagih token-nya, harga per bacaan sekali. Baca sebagian saja dengan "pages".
- Daftar bacaan (GET …/runs) berisi ringkasannya saja: id, nama file, status, model (provider/model) dan waktunya. Nilai dan biayanya ada di GET …/runs/{run}.
- Di sandbox (salinan lokal developer, bukan tekomata.com) hasil bacaan karangan, gratis, dan tidak tersimpan: tidak muncul di daftar, dan pemeriksaan bacaan sungguhan (jenis yang dimatikan, batas halaman, PDF rusak, foto 5 MB) dilewati.
- Mau menentukan sendiri pemisah ribuan atau format tanggal? Pakai "value", teks persis seperti tercetak, atau jadikan kolomnya jenis teks.
- Jenis isi kolom (teks, angka, uang, tanggal, ya/tidak, pilihan) diatur toko di layarnya. Angka dibaca cara Indonesia: 1.250 adalah seribu dua ratus lima puluh.
- Model yang tidak bisa membaca di sini ditolak 422 model_not_offered sebelum apa pun dikirim. Saldo kurang ditolak 402.
- Pengetahuan sebuah jenis dokumen dipakai AI sebagai rujukan, tidak pernah disalin menjadi nilai: nilai tetap hanya yang tercetak di dokumen. Kalau sebuah jenis terus salah membaca sesuatu, tambahkan satu baris di sana. Pindai dibatasi 20 per toko per hari, dan di sandbox hasilnya karangan, gratis, dan tidak tersimpan. Karena ikut dikirim di setiap bacaan, pengetahuan yang panjang menambah sedikit biaya token tiap bacaan, sudah terhitung dalam estimate dan maxCharge.
- Membetulkan nilai hasil bacaan dan mengusulkan jenis dokumen dari contoh tetap dari layar toko.