Ekstraksi Teks OCR
Discuse mengambil teks dari gambar dan dokumen agar Anda dapat membaca — dan memoderasi — konten yang sebelumnya tidak terlihat oleh filter teks. Kirim hingga 5 URL gambar atau dokumen ke POST /api/v2/ocr, lalu Anda akan menerima teks yang dikenali, dan, secara default, teks tersebut akan diproses melalui pemeriksaan konten proyek Anda.
Mengapa OCR untuk moderasi?
Banyak penyalahgunaan tersembunyi di dalam gambar: hinaan yang disisipkan ke meme, tautan phishing dalam tangkapan layar, atau nomor telepon penipuan di selebaran. Pemeriksaan teks biasa tidak akan melihatnya. OCR mengekstrak kata-katanya terlebih dahulu, sehingga pemeriksaan sentimen, spam, badword, dan bahasa yang sudah Anda jalankan pada teks juga berlaku untuk konten gambar dan dokumen.
Bagaimana cara mengekstrak teks?
Kirim satu atau beberapa URL file. moderate bernilai default true, sehingga teks yang diekstrak juga akan diperiksa dan Anda akan menerima objek results; atur ke false jika Anda hanya menginginkan teks mentah.
curl -X POST https://api.discuse.com/api/v2/ocr \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"file_urls": ["https://example.com/user-meme.jpg"],
"moderate": true
}'
Satu permintaan menerima hingga 5 URL gambar atau dokumen.
Respons
{
"text": "BUY FOLLOWERS NOW — dm @spammer for 50% off",
"has_text": true,
"num_files": 1,
"has_violations": true,
"results": {
"hits": true,
"spamfinder": {
"label": "spam",
"confidence": 0.94,
"is_spam": true,
"hit": true
}
},
"usage": {
"api_requests_used": 412,
"api_requests_limit": 10000,
"api_requests_remaining": 9588
}
}
Saat moderate bernilai false (atau tidak ada teks yang ditemukan), results tidak disertakan dan has_violations bernilai false — Anda hanya menerima text yang diekstrak.
Kolom permintaan
| Kolom | Tipe | Catatan |
|---|---|---|
api_key |
string | Opsional di body; Anda dapat mengirim X-API-Key sebagai gantinya |
file_urls |
string[] | URL gambar atau dokumen yang akan dibaca. Minimal satu diperlukan, hingga 5 |
moderate |
boolean | Jalankan teks yang diekstrak melalui pemeriksaan teks Anda. Default-nya true |
Kolom respons
| Kolom | Tipe | Deskripsi |
|---|---|---|
text |
string | Teks yang dikenali, digabungkan dari semua file |
has_text |
boolean | True jika ada teks tidak kosong yang dikenali |
num_files |
number | Jumlah file yang berhasil dibaca |
has_violations |
boolean | True jika teks yang dimoderasi memicu pemeriksaan |
results |
object | Hasil pemeriksaan teks (lihat Analisis Teks), hanya ada saat moderasi dijalankan dan teks ditemukan |
usage |
object | api_requests_used, api_requests_limit, api_requests_remaining |
Objek results memiliki bentuk yang sama dengan POST /api/v2/check — spamfinder, sentiment, language, badwords, dan flag tingkat atas hits. Lihat Analisis Teks untuk detail kolomnya.
Batas penggunaan
OCR adalah fitur paket berbayar; setiap file yang Anda ekstrak dihitung satu kali terhadap kuota OCR Anda.
| Paket | Ekstraksi OCR Bulanan | Tarif Kelebihan |
|---|---|---|
| Basic | Tidak tersedia | - |
| Gold | 1,000 | $0.0015/ekstraksi |
| Platinum | 2,000 | $0.001275/ekstraksi (diskon 15%) |
| Ultimate | 4,000 | $0.001125/ekstraksi (diskon 25%) |
Jika sebuah proyek tidak memiliki langganan aktif, permintaan OCR akan ditolak.
Praktik terbaik
Moderasi dalam satu panggilan
Biarkan moderate aktif (default) saat tujuan Anda adalah mendeteksi pelanggaran kebijakan dalam gambar. Satu panggilan OCR sekaligus mengekstrak teks dan memeriksanya, bukan panggilan OCR yang diikuti panggilan /check terpisah.
async function moderateImage(fileUrl) {
const res = await ocr([fileUrl], true);
if (res.has_violations) {
await flagForReview(fileUrl, res.results);
}
return res.text;
}
Periksa has_text sebelum bertindak
Gambar tanpa teks yang dapat dibaca akan mengembalikan has_text: false dan text kosong. Buat percabangan berdasarkan nilai tersebut agar Anda tidak memperlakukan "tidak ada yang bisa dibaca" sebagai "bersih dan terkonfirmasi".
Kelompokkan file terkait
Jika sebuah kiriman berisi beberapa gambar, kirim semuanya bersama-sama (hingga 5) dalam satu permintaan, bukan satu panggilan per file — lebih sedikit perjalanan bolak-balik, dengan satu respons yang dilacak kuotanya.
Contoh integrasi
Node.js
async function ocr(fileUrls, moderate = true) {
const response = await fetch('https://api.discuse.com/api/v2/ocr', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.DISCUSE_API_KEY
},
body: JSON.stringify({ file_urls: fileUrls, moderate })
});
return response.json();
}
Python
import os
import requests
def ocr(file_urls, moderate=True):
response = requests.post(
'https://api.discuse.com/api/v2/ocr',
headers={
'Content-Type': 'application/json',
'X-API-Key': os.environ['DISCUSE_API_KEY']
},
json={'file_urls': file_urls, 'moderate': moderate}
)
return response.json()
Siap membaca teks dari gambar? Mulai dengan Discuse.