procedure LeggiOCR2;
var
IdHTTPxx1: TIdHTTP;
MPData: TIdMultiPartFormDataStream;
LD, D: TJSONData;
jItem: TJSONData;
Obj, SubObj: TJSONObject;
Arr: TJSONArray;
sResponse: string;
sValue, S: string;
i: integer;
jData, jData2: TJSONData;
jArray, jArray2: TJSONArray;
Parseur: TJSONParser;
jObject: TJSONObject;
cli: TFPHTTPClient = nil;
myServerOCR: string;
//formdata: TStrings;
HTTP: TFPHttpClient;
FormData: TStringList;
FS: TFileStream;
Resp: TStringStream;
Tmp, Sep: string;
SS: TRawByteStringStream;
N, V: string;
begin
if ServerOCR = 'Server Standard' then
myServerOCR := 'https://api.ocr.space/parse/image';
if ServerOCR = 'Server USA' then
myServerOCR := 'https://apipro1.ocr.space/parse/image';
if ServerOCR = 'Server Europe' then
myServerOCR := 'https://apipro2.ocr.space/parse/image';
if ServerOCR = 'Server Asia' then
myServerOCR := 'https://apipro3.ocr.space/parse/image';
//Resp := TStringStream.Create('');
{$IFDEF DARWIN}
S := opath + '/Contents/Resources/temp.jpg';
//showmessage(s);
{$ELSE}
S := ExtractFilePath(ParamStr(0)) + 'temp.jpg';
{$ENDIF}
Resp := TStringStream.Create('');
try
FormData := TStringList.Create;
try
FormData.Add('apikey=' + ApiKey);
FormData.Add('language=' + lngFromOCR);
FormData.Add('isOverlayRequired=False');
Sep := Format('%.8x_multipart_boundary', [Random($ffffff)]);
HTTP.AddHeader('Content-Type', 'multipart/form-data; boundary=' + Sep);
SS := TRawByteStringStream.Create;
try
Tmp := '--' + Sep + CRLF;
Tmp := Tmp + Format('Content-Disposition: form-data; name="%s"; filename="%s"' +
CRLF, ['file', ExtractFileName(S)]);
Tmp := Tmp + 'Content-Type: image/jpg' + CRLF + CRLF;
SS.WriteBuffer(Tmp[1], Length(Tmp));
ShowMessage(S);
FS := TFileStream.Create(S, fmOpenRead or fmShareDenyWrite);
try
SS.CopyFrom(FS, FS.Size);
finally
FS.Free;
end;
for I := 0 to FormData.Count - 1 do
begin
FormData.GetNameValue(I, N, V);
Tmp := CRLF + '--' + Sep + CRLF;
Tmp := Tmp + Format('Content-Disposition: form-data; name="%s"' +
CRLF + CRLF + '%s', [N, V]);
SS.WriteBuffer(Tmp[1], Length(Tmp));
end;
Tmp := CRLF + '--' + Sep + '--' + CRLF;
SS.WriteBuffer(Tmp[1], Length(Tmp));
SS.Position := 0;
HTTP.RequestBody := SS;
HTTP.Post(myServerOCR, Resp);
finally
HTTP.RequestBody := nil;
SS.Free;
end;
finally
FormData.Free;
end;
sResponse := Resp.DataString;
finally
Resp.Free;
end;
try
jData := GetJSON(sResponse);
parseur := TJSONParser.Create(sResponse);
try
DoParse(parseur);
finally
FreeAndNil(parseur);
end;
finally
//JsonObject.Free;
end;
end;