FormRead Sunucu Tarafı İşleme API'si

Oscar Munoz Oscar Munoz · · 7 dakika okuma

Sunucu Tarafı Form İşleme

FormRead Sunucu Tarafı API, taranmış bir form görüntüsü göndermenize ve yapılandırılmış sonuçları (OMR, OCR, BCR) doğrudan JSON olarak almanıza olanak tanır. Tarayıcı yok, iframe yok - sadece arka ucunuzdan bizimkine basit bir HTTP isteği.

  • Bir görüntü gönderin, sonuçları tek bir istekte JSON olarak geri alın
  • OMR (baloncuk algılama), OCR (metin çıkarma) ve BCR (barkod/QR okuma) destekler
  • Form yapılandırması, kontrol panelinde ayarladığınız formdan otomatik olarak yüklenir

Bu API Ne Zaman Kullanılır

Sunucu tarafı API'yi, herhangi bir kullanıcı arayüzü olmadan otomatik, sunucudan sunucuya işleme ihtiyacınız olduğunda kullanın - örneğin, bir klasörden taranan form yığınlarını işleme, mevcut arka uç hattınızla entegrasyon veya otomatik derecelendirme sistemleri oluşturma.

Kullanıcıların formları ayarlayabileceği, sonuçları inceleyebileceği ve QA yapabileceği görsel bir arayüze ihtiyacınız varsa - bunun yerine Iframe Entegrasyon API'si kullanın.

Kimlik Doğrulama

Kurumsal kullanımlar için API, bir Bearer Auth jetonu oluşturularak kullanılabilir.

FormRead pano paneline giriş yapın ve API Token seçeneğine erişin:

API Tokenleri seçeneğinin vurgulandığı FormRead gösterge paneli menüsü

Üçüncü taraf hizmetlerin sizin adınıza uygulamamızla kimlik doğrulaması yapabilmesi için API jetonlarını oluşturun:

İzin onay kutularıyla yeni bir FormRead API tokeni oluşturma

Form Görüntüsünü İşleme

İşlenmek üzere taranmış bir form görüntüsü gönderin. Formun, kontrol paneli veya iframe aracılığıyla okuma alanları (OMR, OCR, BCR) ile önceden ayarlanmış olması gerekir. API, görüntüyü işlemek için kayıtlı form yapılandırmasını kullanır.

POST /api/forms/{form_id}/process

Üstbilgiler

Ad Değer
Authorization Bearer YOUR_API_TOKEN
Accept application/json
Content-Type application/json or multipart/form-data

Dosya yükleme ile:

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"'

Görüntü URL'si ile:

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"}'

Yanıt

{
  "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
}

Yanıt Alanları

Alan Tür Açıklama
success boolean İşlemin başarıyla tamamlanıp tamamlanmadığı
results object Alan sonuçlarının anahtar-değer çiftleri. Anahtarlar alan adlarıdır (ör. OMR-0-0, OCR-1, BCR-2)
omr_details object OMR alanları için konumlar ve doluluk oranları dahil olmak üzere ayrıntılı baloncuk düzeyi verileri
anchor_error boolean Form sayfası hizalanamadıysa true (ör. köşeler algılanamadı)
processing_time_ms integer Milisaniye cinsinden işlem süresi

Görüntü Giriş Seçenekleri

Görüntüyü üç şekilde sağlayabilirsiniz. Tam olarak birini kullanın:

Parametre Tür Açıklama
image file Dosya yükleme (multipart/form-data)
image_url string Görüntüye genel URL
image_base64 string Base64 ile kodlanmış görüntü verisi

Not

Form yapılandırması (okuma alanları, eşikler, dayanak noktaları) FormRead panosunda ayarladığınız formdan otomatik olarak yüklenir. İstekte herhangi bir yapılandırma göndermeniz gerekmez.

Toplu İşleme

Aynı formun birden çok görüntüsünü tek bir istekte işlemek için image_url alanında virgülle ayrılmış bir URL listesi iletin. Sonuçlar aynı sırada bir dizi olarak döndürülür.

İstek

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"}'

Yanıt

{
  "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
}

Toplu İşlem Parametreleri

Parametre Tür Varsayılan Açıklama
image_url string — Bir veya daha fazla genel görüntü URL'si. Toplu işlem modu için virgülle ayrılmış.
details boolean false Her toplu sonuçta omr_details (baloncuk başına konumlar ve doluluk oranları) dahil et. Yanıtları küçük tutmak için varsayılan olarak atlanır.

Toplu işlem davranışı

  • Toplu işlem modu yalnızca image_url ile kullanılabilir. Dosya yüklemeleri ve image_base64 yalnızca tek görüntü içindir.
  • Başarısız bir URL tüm toplu işlemi başarısız kılmaz — o öğe "success": false ve bir error alanı alır; diğerleri devam eder.
  • Sonuçlar, id (0 indeksli) aracılığıyla gönderilen sırayı korur.
  • omr_details tek görüntü modunda her zaman döndürülür; toplu işlem modunda "details": true gerektirir.

omr_details ile toplu işlem

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
  }'

Sınırlar

Sınır Değer Davranış
Dakikadaki istek sayısı 60 API tokeni başına. Aşılması HTTP 429 döndürür.
İstek başına zaman aşımı 60s 60 saniyeyi aşan istekler hata ile sonlandırılır.

Bir 429 yanıtı şöyle görünür:

{
  "message": "Too Many Attempts."
}

Toplu bir istek, içerdiği URL sayısından bağımsız olarak bir çağrı olarak sayılır.

Toplu işlemleri boyutlandırma

  • Toplu iş başına: örnek bir tek görüntü yanıtında processing_time_ms ölçün, ardından 60 saniyeden kısa sürede rahatça bitecek bir toplu iş hazırlayın.
  • Toplu işler arasında: dakikada 60’ın altında kalacak şekilde istekleri hızlandırın.
  • Görüntü boyutu: istemci tarafında hala doğru sonuçları verecek en küçük boyutlara küçültün. Bu, görüntü başına süre üzerindeki en büyük kaldıraçtır.

Desteklenen Alan Türleri

Tür Açıklama Sonuç Formatı
OMR Optik İşaret Tanıma - cevap kağıtlarındaki işaretli baloncukları algılar "A", "B,C"
OCR Optik Karakter Tanıma - basılı veya el yazısı metni çıkarır "John Smith"
BCR Barkod/QR Kod Tanıma - barkodları ve QR kodları okur "1234567890"

Kod Örnekleri

Bir form görüntüsünü işlemek için Python ve JavaScript ile tam örnekler:

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' }

Sıkça Sorulan Sorular

Sunucu Taraflı İşleme API'si ne yapar?

Taranmış bir form görüntüsünü tek bir HTTP POST ile gönderirsiniz ve JSON olarak yapılandırılmış OMR (baloncuk), OCR (metin) ve BCR (barkod/QR) sonuçları alırsınız - tarayıcı veya iframe gerekmez.

İstekleri nasıl doğrularım?

Kişisel erişim belirtecinizi Yetkilendirme başlığında Bearer belirteci olarak iletin: Authorization: Bearer YOUR_API_TOKEN. Belirteci FormRead panonuzun API Belirteçleri bölümünden oluşturun.

Tek bir istekte birden çok görüntü işleyebilir miyim?

Evet. image_url alanında virgülle ayrılmış genel görüntü URL'lerinin bir listesini iletin. Sonuçlar gönderim sırasına uygun bir dizi olarak döner ve başarısız bir URL yalnızca kendi öğesini başarısız kılar - diğerleri devam eder.

Hız ve boyut sınırları nelerdir?

API belirteci başına dakikada en fazla 60 istek, istek başına 60 saniyelik işlem zaman aşımı ile. Toplu bir istek, içerdiği URL sayısına bakılmaksızın tek bir çağrı olarak sayılır.

Her istekle birlikte form yapılandırmasını göndermem gerekiyor mu?

Hayır. Form yapılandırması - okuma alanları, eşikler, dayanak noktaları - FormRead panosunda ayarladığınız formdan otomatik olarak yüklenir. İsteğiniz yalnızca görüntüyü ve URL yolundaki form kimliğini içermelidir.

Formları elle değerlendirmeyi bırakın.

FormRead'i şimdi kullanmaya başlayın: formunuzu oluşturun, ilk sayfanızı tarayın ve dakikalar içinde yapılandırılmış sonuçlar alın.

Hemen başlayın — kredi kartı gerekmez