OCR Metin Çıkarma
Discuse, görsellerin ve belgelerin içindeki metni çıkarır; böylece normalde bir metin filtresi için görünmez kalacak içerikleri okuyabilir ve denetleyebilirsiniz. POST /api/v2/ocr isteğine en fazla 5 görsel veya belge URL'si gönderin; tanınan metni ve varsayılan olarak bu metnin projenizin içerik kontrollerinden geçirilmiş hâlini geri alın.
Moderasyon için neden OCR?
Kötüye kullanımın büyük bir kısmı görsellerin içine gizlenir: bir meme içine yerleştirilmiş hakaret, ekran görüntüsündeki kimlik avı bağlantısı, el ilanındaki dolandırıcılık amaçlı telefon numarası. Düz metin kontrolü bunları asla göremez. OCR önce kelimeleri çıkarır; böylece metinler üzerinde zaten çalıştırdığınız duygu analizi, spam, uygunsuz kelime ve dil kontrolleri görsel ve belge içeriklerine de uygulanır.
Metni nasıl çıkarırım?
Bir veya daha fazla dosya URL'si gönderin. moderate varsayılan olarak true değerindedir; bu nedenle çıkarılan metin de kontrol edilir ve geriye bir results nesnesi alırsınız. Yalnızca ham metni istiyorsanız bunu false olarak ayarlayın.
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
}'
Tek bir istek en fazla 5 görsel veya belge URL'si kabul eder.
Yanıt
{
"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
}
}
moderate false olduğunda (veya hiçbir metin bulunamadığında), results dahil edilmez ve has_violations false olur — yalnızca çıkarılan text değerini alırsınız.
İstek alanları
| Alan | Tür | Notlar |
|---|---|---|
api_key |
string | Gövdede isteğe bağlıdır; bunun yerine X-API-Key gönderebilirsiniz |
file_urls |
string[] | Okunacak görsel veya belge URL'leri. En az bir tane gerekir, en fazla 5 |
moderate |
boolean | Çıkarılan metni metin kontrollerinizden geçirir. Varsayılan değer true |
Yanıt alanları
| Alan | Tür | Açıklama |
|---|---|---|
text |
string | Tanınan metin; tüm dosyalar genelinde birleştirilir |
has_text |
boolean | Boş olmayan herhangi bir metin tanındıysa True |
num_files |
number | Başarıyla okunan dosya sayısı |
has_violations |
boolean | Denetlenen metin bir kontrolü tetiklediyse True |
results |
object | Metin kontrolü sonuçları (bkz. Metin Analizi); yalnızca moderasyon çalıştırıldığında ve metin bulunduğunda bulunur |
usage |
object | api_requests_used, api_requests_limit, api_requests_remaining |
results nesnesi, POST /api/v2/check ile aynı yapıya sahiptir: spamfinder, sentiment, language, badwords ve üst düzey hits bayrağı. Alan ayrıntıları için Metin Analizi bölümüne bakın.
Kullanım sınırları
OCR ücretli planlara ait bir özelliktir; metnini çıkardığınız her dosya OCR kotanızdan bir kullanım olarak düşülür.
| Plan | Aylık OCR Çıkarmaları | Aşım Ücreti |
|---|---|---|
| Basic | Kullanılamaz | - |
| Gold | 1,000 | $0.0015/çıkarma |
| Platinum | 2,000 | $0.001275/çıkarma (%15 indirim) |
| Ultimate | 4,000 | $0.001125/çıkarma (%25 indirim) |
Bir projenin aktif aboneliği yoksa OCR istekleri reddedilir.
En iyi uygulamalar
Tek çağrıda denetleyin
Amacınız görsellerdeki politika ihlallerini yakalamaksa moderate seçeneğini açık bırakın (varsayılan). Tek bir OCR çağrısı, ayrı bir OCR çağrısının ardından ayrı bir /check çağrısı yapmak yerine metni hem çıkarır hem de kontrol eder.
async function moderateImage(fileUrl) {
const res = await ocr([fileUrl], true);
if (res.has_violations) {
await flagForReview(fileUrl, res.results);
}
return res.text;
}
İşlem yapmadan önce has_text değerini kontrol edin
Okunabilir metin içermeyen bir görsel has_text: false ve boş bir text döndürür. Bu duruma göre akışınızı dallandırın; böylece "okunacak bir şey yok" durumunu "temiz ve doğrulanmış" olarak değerlendirmezsiniz.
İlgili dosyaları toplu gönderin
Bir gönderide birden fazla görsel varsa, dosya başına ayrı çağrı yapmak yerine bunları tek bir istekte birlikte gönderin (en fazla 5) — daha az gidiş geliş, kota takibi yapılan tek bir yanıt.
Entegrasyon örnekleri
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()
Görsellerden metin okumaya hazır mısınız? Discuse ile başlayın.