Added OCRSpace class

This commit is contained in:
Jaex 2016-05-13 02:03:54 +03:00
parent ecd9cdcb59
commit c430351c75
3 changed files with 151 additions and 0 deletions

View file

@ -76,5 +76,6 @@ public static partial class APIKeys
public static string GoogleClientSecret = "";
public static string TwitterConsumerKey = "";
public static string TwitterConsumerSecret = "";
public static string OCRSpaceAPIKey = "";
}
}

View file

@ -0,0 +1,149 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright (c) 2007-2016 ShareX Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
namespace ShareX.UploadersLib.OtherServices
{
public enum OCRSpaceLanguages
{
[Description("Czech")]
ce,
[Description("Danish")]
dan,
[Description("Dutch")]
dut,
[Description("English")]
eng,
[Description("Finnish")]
fin,
[Description("French")]
fre,
[Description("German")]
ger,
[Description("Hungarian")]
hun,
[Description("Italian")]
ita,
[Description("Norwegian")]
nor,
[Description("Polish")]
pol,
[Description("Portuguese")]
por,
[Description("Spanish")]
spa,
[Description("Swedish")]
swe,
[Description("Chinese Simplified")]
chs,
[Description("Greek")]
gre,
[Description("Japanese")]
jpn,
[Description("Russian")]
rus,
[Description("Turkish")]
tur,
[Description("Chinese Traditional")]
cht,
[Description("Korean")]
kor
}
public class OCRSpace : Uploader
{
private const string APIURLFree = "https://api.ocr.space/parse/image";
private const string APIURLUSA = "?";
private const string APIURLEurope = "https://apipro3.ocr.space/parse/image"; // Frankfurt
private const string APIURLAsia = "https://apipro8.ocr.space/parse/image"; // Tokyo
public OCRSpaceResponse DoOCR(Stream stream, string fileName, OCRSpaceLanguages language, bool overlay = false)
{
Dictionary<string, string> arguments = new Dictionary<string, string>();
arguments.Add("apikey", APIKeys.OCRSpaceAPIKey);
//arguments.Add("url", "");
arguments.Add("language", language.ToString());
arguments.Add("isOverlayRequired", overlay.ToString());
UploadResult ur = UploadData(stream, APIURLEurope, fileName, "file", arguments);
if (ur.IsSuccess)
{
return JsonConvert.DeserializeObject<OCRSpaceResponse>(ur.Response);
}
return null;
}
}
public class OCRSpaceResponse
{
public List<OCRSpaceParsedResult> ParsedResults { get; set; }
public int OCRExitCode { get; set; }
public bool IsErroredOnProcessing { get; set; }
public string ErrorMessage { get; set; }
public string ErrorDetails { get; set; }
public string ProcessingTimeInMilliseconds { get; set; }
}
public class OCRSpaceParsedResult
{
public OCRSpaceTextOverlay TextOverlay { get; set; }
public int FileParseExitCode { get; set; }
public string ParsedText { get; set; }
public string ErrorMessage { get; set; }
public string ErrorDetails { get; set; }
}
public class OCRSpaceTextOverlay
{
public List<OCRSpaceLine> Lines { get; set; }
public bool HasOverlay { get; set; }
public string Message { get; set; }
}
public class OCRSpaceLine
{
public List<OCRSpaceWord> Words { get; set; }
public int MaxHeight { get; set; }
public int MinTop { get; set; }
}
public class OCRSpaceWord
{
public string WordText { get; set; }
public int Left { get; set; }
public int Top { get; set; }
public int Height { get; set; }
public int Width { get; set; }
}
}

View file

@ -211,6 +211,7 @@
<Compile Include="Helpers\OAuth\IOAuthBase.cs" />
<Compile Include="Helpers\SSLBypassHelper.cs" />
<Compile Include="BaseServices\URLSharingService.cs" />
<Compile Include="OtherServices\OCRSpace.cs" />
<Compile Include="SharingServices\DeliciousSharingService.cs" />
<Compile Include="SharingServices\EmailSharingService.cs" />
<Compile Include="SharingServices\FacebookSharingService.cs" />