OCR टेक्स्ट एक्सट्रैक्शन
Discuse इमेज और दस्तावेज़ों से टेक्स्ट निकालता है, ताकि आप ऐसा कंटेंट पढ़ — और मॉडरेट — कर सकें जो वरना टेक्स्ट फ़िल्टर को दिखाई ही नहीं देता। POST /api/v2/ocr पर अधिकतम 5 इमेज या दस्तावेज़ URL भेजें और आपको पहचाना गया टेक्स्ट वापस मिलता है, और डिफ़ॉल्ट रूप से वही टेक्स्ट आपके प्रोजेक्ट की कंटेंट जाँचों से भी गुज़रता है।
मॉडरेशन के लिए OCR क्यों?
बहुत-सा दुरुपयोग इमेज के अंदर छिपा होता है: किसी मीम में जोड़ा गया अपमानजनक शब्द, स्क्रीनशॉट में फ़िशिंग लिंक, किसी फ़्लायर पर स्कैम वाला फ़ोन नंबर। सामान्य टेक्स्ट जाँच इन्हें कभी देख ही नहीं पाती। OCR पहले शब्दों को निकालता है, ताकि टेक्स्ट पर आप जो sentiment, spam, badword, और भाषा जाँच पहले से चलाते हैं, वही इमेज और दस्तावेज़ के कंटेंट पर भी लागू हो सके।
मैं टेक्स्ट कैसे निकालूँ?
एक या अधिक फ़ाइल URL भेजें। moderate का डिफ़ॉल्ट true होता है, इसलिए निकाले गए टेक्स्ट की भी जाँच होती है और आपको एक results ऑब्जेक्ट वापस मिलता है; अगर आपको सिर्फ़ कच्चा टेक्स्ट चाहिए, तो इसे false पर सेट करें।
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
}'
एक ही अनुरोध में अधिकतम 5 इमेज या दस्तावेज़ URL भेजे जा सकते हैं।
रिस्पॉन्स
{
"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 होता है (या कोई टेक्स्ट नहीं मिला), तो results शामिल नहीं किया जाता और has_violations false होता है — आपको बस निकाला गया text मिलता है।
अनुरोध फ़ील्ड
| फ़ील्ड | प्रकार | नोट्स |
|---|---|---|
api_key |
string | बॉडी में वैकल्पिक; इसके बजाय आप X-API-Key भेज सकते हैं |
file_urls |
string[] | पढ़ने के लिए इमेज या दस्तावेज़ URL। कम से कम एक ज़रूरी, अधिकतम 5 |
moderate |
boolean | निकाले गए टेक्स्ट को आपकी टेक्स्ट जाँचों से गुज़ारें। डिफ़ॉल्ट true है |
रिस्पॉन्स फ़ील्ड
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
text |
string | पहचाना गया टेक्स्ट, सभी फ़ाइलों से जोड़कर |
has_text |
boolean | अगर कोई भी खाली न होने वाला टेक्स्ट पहचाना गया हो, तो True |
num_files |
number | सफलतापूर्वक पढ़ी गई फ़ाइलों की संख्या |
has_violations |
boolean | अगर मॉडरेट किए गए टेक्स्ट ने किसी जाँच को ट्रिगर किया हो, तो True |
results |
object | टेक्स्ट-जाँच के परिणाम (Text Analysis देखें), केवल तब मौजूद जब मॉडरेशन चला हो और टेक्स्ट मिला हो |
usage |
object | api_requests_used, api_requests_limit, api_requests_remaining |
results ऑब्जेक्ट का ढाँचा POST /api/v2/check जैसा ही होता है — spamfinder, sentiment, language, badwords, और टॉप-लेवल hits फ़्लैग। फ़ील्ड की जानकारी के लिए Text Analysis देखें।
उपयोग सीमाएँ
OCR एक पेड-प्लान सुविधा है; आप जिस भी फ़ाइल से टेक्स्ट निकालते हैं, वह आपके OCR कोटा में एक बार गिनी जाती है।
| प्लान | मासिक OCR एक्सट्रैक्शन | ओवरेज दर |
|---|---|---|
| Basic | उपलब्ध नहीं | - |
| Gold | 1,000 | $0.0015/extraction |
| Platinum | 2,000 | $0.001275/extraction (15% छूट) |
| Ultimate | 4,000 | $0.001125/extraction (25% छूट) |
अगर किसी प्रोजेक्ट की कोई सक्रिय सदस्यता नहीं है, तो OCR अनुरोध अस्वीकार कर दिए जाते हैं।
सर्वोत्तम तरीके
एक ही कॉल में मॉडरेट करें
जब आपका लक्ष्य इमेज में नीति उल्लंघन पकड़ना हो, तो moderate चालू रखें (डिफ़ॉल्ट)। इससे एक OCR कॉल टेक्स्ट भी निकालती है और उसकी जाँच भी करती है, बजाय इसके कि पहले OCR कॉल और फिर अलग से /check कॉल करनी पड़े।
async function moderateImage(fileUrl) {
const res = await ocr([fileUrl], true);
if (res.has_violations) {
await flagForReview(fileUrl, res.results);
}
return res.text;
}
कार्रवाई से पहले has_text जाँचें
जिस इमेज में पढ़ने योग्य टेक्स्ट नहीं होता, वह has_text: false और खाली text लौटाती है। इसलिए इसके आधार पर अलग रास्ता रखें, ताकि आप "पढ़ने के लिए कुछ नहीं" को "साफ़ और पुष्टि किया गया" न मान लें।
संबंधित फ़ाइलों को बैच करें
अगर किसी सबमिशन में कई इमेज हैं, तो हर फ़ाइल के लिए अलग कॉल करने के बजाय उन्हें एक ही अनुरोध में साथ भेजें (अधिकतम 5) — कम राउंड ट्रिप, और एक कोटा-ट्रैक्ड रिस्पॉन्स।
इंटीग्रेशन उदाहरण
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()
इमेज से टेक्स्ट पढ़ने के लिए तैयार हैं? Discuse के साथ शुरू करें.