Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
OCR Space - Free OCR API ( Ticari Serbest, Günde 500, ayda 25000 Sorgu ücretsiz )
#1
Lightbulb 
Merhabalar.

- Bugün nette dolaşırken dikkatimi çekti. 

ocr.space.logo.png

OCR.Space isimli bu sitede ücretsiz epostanıza API anahtarı üretilip veriliyor.  Smile

  • 3 sayfa ile sınırlı PDF Dosya - OCR 
  • Commercial use allowed ( yani ticari olarak kullanım serbest )
  • IP başına Günlük 500 sorgu ile sınırlı ama bu bile bir çoğumuzu tatmin eder
  • IP başına  Aylık 25000 sorgu ki bunu hesaplayamadım nasıl 15000 ediyor çarpınca ama öyle demişler. Onların yalancısıyım. 
  • API desteği var, JSON cevap dönüyor. Sadece Delphi değil bir çok platforma uyumlu.

Şimdi de size hazırladığım paket function'u paylaşayım.

function OCR_Online( OCR_ApiKey_OcrSpace :String; aPNG: TPngImage; aFileName:String = '' ): String;
// Uses idMultipartFormData, JSON, EncdDecd,
//      System.Generics.Collections,
//      System.NetEncoding;
 function PNGToBase64Image( aPNGImage: TPngImage ): string;
 var
   Input : TMemoryStream;
   Output: TStringStream;
 begin
   Input := TMemoryStream.Create;
   try
     aPNGImage.SaveToStream(Input);
     Input.Position := 0;
     Output := TStringStream.Create('');
     try
       EncdDecd.EncodeStream(Input, Output);
       Result := Output.DataString;
     finally
       Output.Free;
     end;
   finally
     Input.Free;
   end;
 end;
var
 IdHttp              : TIdHTTP;
 IdMultiPartFormData : TIdMultiPartFormDataStream;
 JsonObject          : TJSONObject;
 JSonValue           : TJSONValue;
 sGelen              : string;
 sSonuc              : string;
begin
 IdHTTP := TIdHTTP.Create(nil);
 IdMultiPartFormData := TIdMultiPartFormDataStream.Create;
 JSONObject  := TJSONObject.Create;
 sSonuc := '';
 try
   IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded';

   IdMultiPartFormData.AddFormField(  'apikey',             OCR_ApiKey_OcrSpace );
   IdMultiPartFormData.AddFormField(  'language',          'eng'      );
   IdMultiPartFormData.AddFormField(  'filetype',          'png'      );
   IdMultiPartFormData.AddFormField(  'isOverlayRequired', 'false'    );

   if aFileName <> ''
     then IdMultiPartFormData.AddFile     (  'file', aFileName, 'image/png') // Fiziki Dosya İçin...
     else IdMultiPartFormData.AddFormField(  'base64Image',
                               'data:image/png;base64,' + PNGToBase64Image(aPNG),
                               'base64',
                               'image/png' ).ContentTransfer := '8bit';

   sGelen      := IdHttp.Post('https://api.ocr.space/parse/image', IdMultiPartFormData);

   JsonValue   := JSONObject.ParseJSONValue(sGelen);
   JsonValue   :=(JSONValue as TJSONObject).Get('ParsedResults').JSONValue;

   if ( JSONValue is TJSONArray)
     then sSonuc := (  (JsonValue as TJSONArray)
                       .Items[0] as TJSonObject
                    )  .Get('ParsedText')
                       .JSONValue
                       .Value;
   Result :=  sSonuc;
 finally
   JSONObject.Free;
   IdMultiPartFormData.Free;
   IdHttp.Free;
 end;
end;

Not :
  1. OpenSSL kütüphanelerini EXE klasörüne veya SYSTEM PATH tanımındaki bir yola koymayı unutmayınız.
  2. Bu resmi böylece göndermiyorum, arka planda önce resmi siyah beyaza çevirip sonra aynı tepeleme hizaya hizalayıp öyle yolluyorum. Başarı ondan artıyor. Mucize yok yani, sihir karıştıracaksınız illa ki. Idea


Kullanımı :

Az yer kaplıyor diye PNG olarak hazırladım. Dosyaları kendinize göre özelleştirebilirsiniz.

    EditCaptcha.Text := OCR_Online( '5f882ApiKey8957', TPNGImage( CaptchaImage ) );  

veya fiziki dosya adıyla şöyle


    EditCaptcha.Text := OCR_Online( '5f882ApiKey8957', nil, aDosyaAdi );  


- Şu an KARS'ta görevdeyim, Captcha resmi gelişindeki yavaşlık otel internet hızından. 
- Gelen resim anında gösteriliyor ondan sonra yollanıp OCR cevabı bekleniyor. Buna göre hızı değerlendirin. Sonuç alma işlemi çok hızlı.

k2rlieqglnatqeofgeje.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#2
Merhaba,
Katkılarınızdan dolayı teşekkür ederim @mrmarman hocam.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
Ellerinize sağlık üstad.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#4
iş yarar bir çalışma olmuş , elinize sağlık.


boyle bir kod ornegi de mevcutmus.
https://github.com/A9T9/OCR.Space-OCR-AP...%20api.pas
WWW
Cevapla
#5
@mrmarman hocam, 

Kod örneğini adamlarla paylaşsan, Delphi örneği olarak yayınlasalar güzel olur ama sen bilirsin tabii  Rolleyes
Cevapla
#6
Alıntı:IP başına  Aylık 25000 sorgu ki bunu hesaplayamadım nasıl 15000 ediyor çarpınca ama öyle demişler. Onların yalancısıyım. 

25.000 apiKey'e ait aylık limit olabilir
ip bazında ise günlük limit 500 ' dür
WWW
Cevapla
#7
Çok yaşa  Smile

Kod örneğini görseydim, png base64 stream ile uğraşmazdım iyi ki görmemişim.  Rolleyes GitHub linki için teşekkürler.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Free Pascal'da AVLTree onurcan1977 2 211 08-06-2019, Saat: 18:22
Son Yorum: onurcan1977
  Json Free Etmek yhackup 3 192 10-04-2019, Saat: 16:51
Son Yorum: esistem
  Free malitutuncu 10 1.117 07-06-2018, Saat: 12:16
Son Yorum: uparlayan
Brick Free vs FreeAndNil edo 35 6.315 28-05-2018, Saat: 10:55
Son Yorum: edo
  kullanici sorgu hattası admin02 19 2.678 22-06-2017, Saat: 11:25
Son Yorum: Mericx



Konuyu Okuyanlar: 1 Ziyaretçi