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

OCR.Space isimli bu sitede ücretsiz epostanıza API anahtarı üretilip veriliyor.
Şimdi de size hazırladığım paket function'u paylaşayım.
Not :
Kullanımı :
Az yer kaplıyor diye PNG olarak hazırladım. Dosyaları kendinize göre özelleştirebilirsiniz.
veya fiziki dosya adıyla şöyle
- Ş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ı.
- Bugün nette dolaşırken dikkatimi çekti.

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

- 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 :
- OpenSSL kütüphanelerini EXE klasörüne veya SYSTEM PATH tanımındaki bir yola koymayı unutmayınız.
- 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.
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ı.
Saygılarımla
Muharrem ARMAN

Muharrem ARMAN


