mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-30 01:07:21 +13:00
fixed #5684: Automatically use OCR Engine 2
This commit is contained in:
parent
d5dc95e18b
commit
bc24ec9e8f
2 changed files with 27 additions and 3 deletions
|
@ -27,6 +27,7 @@ You should have received a copy of the GNU General Public License
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace ShareX.HelpersLib
|
||||
{
|
||||
|
@ -285,6 +286,11 @@ public static string[] Lines(this string text)
|
|||
return text.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);
|
||||
}
|
||||
|
||||
public static string ReplaceNewLines(this string text, string replacement = "\r\n")
|
||||
{
|
||||
return Regex.Replace(text, @"\r\n?|\n", replacement);
|
||||
}
|
||||
|
||||
public static IEnumerable<Tuple<string, string>> ForEachBetween(this string text, string front, string back)
|
||||
{
|
||||
int f = 0;
|
||||
|
|
|
@ -97,19 +97,30 @@ public class OCRSpace : Uploader
|
|||
public string APIKey { get; set; }
|
||||
public OCRSpaceLanguages Language { get; set; } = OCRSpaceLanguages.eng;
|
||||
public bool Overlay { get; set; }
|
||||
public bool UseOCREngine2 { get; set; }
|
||||
|
||||
public OCRSpace(string apiKey, OCRSpaceLanguages language = OCRSpaceLanguages.eng, bool overlay = false)
|
||||
public OCRSpace(string apiKey, OCRSpaceLanguages language = OCRSpaceLanguages.eng, bool overlay = false, bool useOCREngine2 = false)
|
||||
{
|
||||
APIKey = apiKey;
|
||||
Language = language;
|
||||
Overlay = overlay;
|
||||
UseOCREngine2 = useOCREngine2;
|
||||
}
|
||||
|
||||
public OCRSpaceResponse DoOCR(Stream stream, string fileName)
|
||||
{
|
||||
Dictionary<string, string> arguments = new Dictionary<string, string>();
|
||||
arguments.Add("apikey", APIKey);
|
||||
arguments.Add("language", Language.ToString());
|
||||
|
||||
if (UseOCREngine2)
|
||||
{
|
||||
arguments.Add("OCREngine", "2");
|
||||
}
|
||||
else
|
||||
{
|
||||
arguments.Add("language", Language.ToString());
|
||||
}
|
||||
|
||||
arguments.Add("isOverlayRequired", Overlay.ToString());
|
||||
|
||||
UploadResult ur = SendRequestFile(APIURLUSA, stream, fileName, "file", arguments);
|
||||
|
@ -133,12 +144,19 @@ public static string DoOCR(OCRSpaceLanguages language, Stream stream, string fil
|
|||
|
||||
try
|
||||
{
|
||||
OCRSpace ocr = new OCRSpace(APIKeys.OCRSpaceAPIKey, language);
|
||||
bool useOCREngine2 = language.HasFlagAny(OCRSpaceLanguages.eng, OCRSpaceLanguages.ger, OCRSpaceLanguages.fre);
|
||||
|
||||
OCRSpace ocr = new OCRSpace(APIKeys.OCRSpaceAPIKey, language, false, useOCREngine2);
|
||||
OCRSpaceResponse response = ocr.DoOCR(stream, fileName);
|
||||
|
||||
if (response != null && !response.IsErroredOnProcessing && response.ParsedResults.Count > 0)
|
||||
{
|
||||
result = response.ParsedResults[0].ParsedText;
|
||||
|
||||
if (!string.IsNullOrEmpty(result))
|
||||
{
|
||||
result = result.ReplaceNewLines();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
|
|
Loading…
Reference in a new issue