FormRead सर्वर-साइड प्रोसेसिंग API
सर्वर-साइड फॉर्म प्रोसेसिंग
FormRead सर्वर-साइड API आपको एक स्कैन किए गए फॉर्म इमेज को भेजने और सीधे JSON के रूप में संरचित परिणाम (OMR, OCR, BCR) प्राप्त करने देता है। कोई ब्राउज़र नहीं, कोई iframe नहीं - बस आपके बैकएंड से हमारे बैकएंड तक एक सरल HTTP अनुरोध।
- एक इमेज भेजें, एकल अनुरोध में JSON के रूप में परिणाम प्राप्त करें
- OMR (बबल डिटेक्शन), OCR (टेक्स्ट एक्सट्रैक्शन), और BCR (बारकोड/QR रीडिंग) का समर्थन करता है
- फॉर्म कॉन्फ़िगरेशन डैशबोर्ड में आपके द्वारा सेट किए गए फॉर्म से स्वचालित रूप से लोड होता है
इस API का उपयोग कब करें
सर्वर-साइड API का उपयोग तब करें जब आपको बिना किसी उपयोगकर्ता इंटरफ़ेस के स्वचालित, सर्वर-टू-सर्वर प्रोसेसिंग की आवश्यकता हो - उदाहरण के लिए, फ़ोल्डर से स्कैन किए गए फॉर्म के बैचों को प्रोसेस करना, अपने मौजूदा बैकएंड पाइपलाइन के साथ एकीकृत करना, या स्वचालित ग्रेडिंग सिस्टम बनाना।
यदि आपको एक विज़ुअल इंटरफ़ेस चाहिए जहाँ उपयोगकर्ता फॉर्म सेट कर सकें, परिणामों की समीक्षा कर सकें, और QA कर सकें - तो Iframe इंटीग्रेशन API का उपयोग करें।
प्रमाणीकरण
एंटरप्राइज़ उपयोग के लिए, API का उपयोग Bearer Auth टोकन उत्पन्न करके किया जा सकता है।
FormRead डैशबोर्ड में लॉगिन करें और API टोकन विकल्प तक पहुंचें:
API टोकन बनाएं ताकि तृतीय-पक्ष सेवाएं आपकी ओर से हमारे एप्लिकेशन से प्रमाणित हो सकें:
फॉर्म इमेज प्रोसेस करें
प्रोसेस करने के लिए एक स्कैन किए गए फॉर्म इमेज को भेजें। फॉर्म को पहले से डैशबोर्ड या iframe के माध्यम से रीड एरिया (OMR, OCR, BCR) के साथ सेट किया जाना चाहिए। API इमेज को प्रोसेस करने के लिए सहेजे गए फॉर्म कॉन्फ़िगरेशन का उपयोग करता है।
हेडर्स
| नाम | मान |
|---|---|
Authorization |
Bearer YOUR_API_TOKEN |
Accept |
application/json |
Content-Type |
application/json or multipart/form-data |
फ़ाइल अपलोड के साथ:
curl --location 'https://formread.org/api/forms/123/process' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--form 'image=@"/path/to/scanned-form.jpg"'
इमेज URL के साथ:
curl --location 'https://formread.org/api/forms/123/process' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"image_url": "https://example.com/scanned-form.jpg"}'
प्रतिक्रिया
{
"success": true,
"results": {
"OMR-0-0": "A",
"OMR-0-1": "C",
"OMR-0-2": "B,D",
"OCR-1": "John Smith",
"BCR-2": "1234567890"
},
"omr_details": {
"OMR-0": {
"questions": [
[
{"left": 0.12, "top": 0.22, "width": 0.02, "height": 0.02, "blackPixelsRatio": 0.72},
{"left": 0.15, "top": 0.22, "width": 0.02, "height": 0.02, "blackPixelsRatio": 0.15}
]
]
}
},
"anchor_error": false,
"processing_time_ms": 450
}
प्रतिक्रिया फ़ील्ड
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
success |
boolean | प्रोसेसिंग सफलतापूर्वक पूरी हुई या नहीं |
results |
object | एरिया परिणामों के कुंजी-मूल्य जोड़े। कुंजियाँ एरिया नाम हैं (जैसे, OMR-0-0, OCR-1, BCR-2) |
omr_details |
object | OMR क्षेत्रों के लिए स्थिति और भरण अनुपात सहित विस्तृत बबल-स्तरीय डेटा |
anchor_error |
boolean | यदि फॉर्म शीट को संरेखित नहीं किया जा सका (जैसे, कोनों का पता नहीं चला) तो सत्य |
processing_time_ms |
integer | मिलीसेकंड में प्रोसेसिंग समय |
इमेज इनपुट विकल्प
आप इमेज तीन तरीकों से प्रदान कर सकते हैं। बिल्कुल एक का उपयोग करें:
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
image |
file | फ़ाइल अपलोड (multipart/form-data) |
image_url |
string | इमेज का सार्वजनिक URL |
image_base64 |
string | Base64-एन्कोडेड इमेज डेटा |
नोट
फॉर्म कॉन्फ़िगरेशन (रीड एरिया, थ्रेशोल्ड, एंकर) स्वचालित रूप से FormRead डैशबोर्ड में आपके द्वारा सेट किए गए फॉर्म से लोड होता है। आपको अनुरोध में कोई कॉन्फ़िगरेशन भेजने की आवश्यकता नहीं है।
बैच प्रोसेसिंग
एक ही अनुरोध में एक ही फ़ॉर्म की कई छवियों को संसाधित करने के लिए, image_url फ़ील्ड में अल्पविराम से अलग की गई URL की सूची पास करें। परिणाम उसी क्रम में एक सरणी के रूप में लौटाए जाते हैं।
अनुरोध
curl --location 'https://formread.org/api/forms/123/process' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"image_url": "https://example.com/a.jpg,https://example.com/b.jpg,https://example.com/c.jpg"}'
प्रतिक्रिया
{
"results": [
{
"id": "0",
"image_url": "https://example.com/a.jpg",
"success": true,
"results": { "OMR-0-0": "A", "OCR-1": "John Smith" },
"anchor_error": false,
"processing_time_ms": 430
},
{
"id": "1",
"image_url": "https://example.com/b.jpg",
"success": true,
"results": { "OMR-0-0": "B", "OCR-1": "Jane Doe" }
},
{
"id": "2",
"image_url": "https://example.com/c.jpg",
"success": false,
"error": "Failed to fetch image from URL: 404"
}
],
"total": 3
}
बैच पैरामीटर
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
image_url |
string | — | एक या अधिक सार्वजनिक छवि URL। बैच मोड के लिए अल्पविराम से अलग। |
details |
boolean | false | प्रत्येक बैच परिणाम में omr_details (प्रति-बबल स्थिति और भरण अनुपात) शामिल करें। प्रतिक्रियाओं को छोटा रखने के लिए डिफ़ॉल्ट रूप से छोड़ा गया। |
बैच व्यवहार
- बैच मोड केवल
image_urlके साथ उपलब्ध है। फ़ाइल अपलोड औरimage_base64केवल एकल-छवि हैं। - एक विफल URL पूरे बैच को विफल नहीं करता है — उस आइटम को
"success": falseऔर एकerrorफ़ील्ड मिलता है; बाकी जारी रहते हैं। - परिणाम
id(0-अनुक्रमित) के माध्यम से प्रस्तुत क्रम को संरक्षित करते हैं। omr_detailsहमेशा एकल-छवि मोड में लौटाया जाता है; बैच मोड में इसके लिए"details": trueकी आवश्यकता होती है।
omr_details के साथ बैच
curl --location 'https://formread.org/api/forms/123/process' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"image_url": "https://example.com/a.jpg,https://example.com/b.jpg",
"details": true
}'
सीमाएँ
| सीमा | मान | व्यवहार |
|---|---|---|
| अनुरोध प्रति मिनट | 60 |
प्रति API टोकन। अधिक होने पर HTTP 429 लौटाता है। |
| प्रति-अनुरोध टाइमआउट | 60s |
60 सेकंड से अधिक के अनुरोध त्रुटि के साथ समाप्त कर दिए जाते हैं। |
एक 429 प्रतिक्रिया इस तरह दिखती है:
{
"message": "Too Many Attempts."
}
एक बैच अनुरोध में चाहे कितनी भी URL हों, इसे एक कॉल माना जाता है।
बैच का आकार निर्धारित करना
- प्रति बैच: एक नमूना एकल-छवि प्रतिक्रिया पर
processing_time_msमापें, फिर एक बैच पैक करें जो आराम से 60 सेकंड के भीतर समाप्त हो। - बैचों के बीच: अनुरोधों की गति इस प्रकार रखें कि आप प्रति मिनट 60 से कम रहें।
- छवि आकार: क्लाइंट-साइड पर सबसे छोटे आयामों तक कम करें जो अभी भी सही परिणाम देते हैं। यह प्रति-छवि समय पर सबसे बड़ा लीवर है।
समर्थित एरिया प्रकार
| प्रकार | विवरण | परिणाम प्रारूप |
|---|---|---|
| OMR | ऑप्टिकल मार्क रिकॉग्निशन - उत्तर पत्रिकाओं पर भरे गए बुलबुले का पता लगाता है | "A", "B,C" |
| OCR | ऑप्टिकल कैरेक्टर रिकॉग्निशन - मुद्रित या हस्तलिखित टेक्स्ट निकालता है | "John Smith" |
| BCR | बारकोड/QR कोड रिकॉग्निशन - बारकोड और QR कोड पढ़ता है | "1234567890" |
कोड उदाहरण
फॉर्म इमेज प्रोसेस करने के लिए Python और JavaScript में पूर्ण उदाहरण यहाँ दिए गए हैं:
Python
import requests
API_URL = "https://formread.org/api/forms/{form_id}/process"
TOKEN = "YOUR_API_TOKEN"
with open("scanned-form.jpg", "rb") as f:
response = requests.post(
API_URL.format(form_id=123),
headers={
"Accept": "application/json",
"Authorization": f"Bearer {TOKEN}",
},
files={"image": f},
)
data = response.json()
print(data["results"])
# {"OMR-0-0": "A", "OMR-0-1": "C", "OCR-1": "John Smith"}
Node.js
const FormData = require('form-data');
const fs = require('fs');
const axios = require('axios');
const form = new FormData();
form.append('image', fs.createReadStream('scanned-form.jpg'));
const response = await axios.post(
'https://formread.org/api/forms/123/process',
form,
{
headers: {
...form.getHeaders(),
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_API_TOKEN',
},
}
);
console.log(response.data.results);
// { 'OMR-0-0': 'A', 'OMR-0-1': 'C', 'OCR-1': 'John Smith' }
अक्सर पूछे जाने वाले प्रश्न
सर्वर-साइड प्रोसेसिंग API क्या करता है?
आप एक एकल HTTP POST में एक स्कैन किए गए फॉर्म इमेज को भेजते हैं और JSON के रूप में संरचित OMR (बबल), OCR (टेक्स्ट), और BCR (बारकोड/QR) परिणाम प्राप्त करते हैं - कोई ब्राउज़र, कोई iframe आवश्यक नहीं।
मैं अनुरोधों को कैसे प्रमाणित करूं?
अपने व्यक्तिगत एक्सेस टोकन को Authorization हेडर में Bearer टोकन के रूप में पास करें: Authorization: Bearer YOUR_API_TOKEN। टोकन को अपने FormRead डैशबोर्ड के API टोकन अनुभाग से उत्पन्न करें।
क्या मैं एक ही अनुरोध में कई इमेज प्रोसेस कर सकता हूँ?
हाँ। image_url फ़ील्ड में सार्वजनिक इमेज URL की अल्पविराम-पृथक सूची पास करें। परिणाम सबमिशन क्रम से मेल खाते हुए एक सरणी में वापस आते हैं, और एक विफल URL केवल अपनी वस्तु को विफल करता है - बाकी जारी रहते हैं।
दर और आकार की सीमाएँ क्या हैं?
प्रति API टोकन प्रति मिनट 60 अनुरोध तक, प्रति अनुरोध 60 सेकंड की प्रोसेसिंग टाइमआउट के साथ। एक बैच अनुरोध में चाहे कितने भी URL हों, इसे एक ही कॉल माना जाता है।
क्या मुझे प्रत्येक अनुरोध के साथ फॉर्म कॉन्फ़िगरेशन भेजने की आवश्यकता है?
नहीं। फॉर्म कॉन्फ़िगरेशन - रीड एरिया, थ्रेशोल्ड, एंकर - स्वचालित रूप से FormRead डैशबोर्ड में आपके द्वारा सेट किए गए फॉर्म से लोड होता है। आपके अनुरोध में केवल इमेज और URL पथ में फॉर्म आईडी की आवश्यकता होती है।