12-02-2019, Saat: 00:21
(Son Düzenleme: 12-02-2019, Saat: 08:56, Düzenleyen: mrmarman.
Sebep: Fiziki dosya için örnek kullanım unutulmuş
)
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