diff --git a/ShareX.HelpersLib/Extensions/StringExtensions.cs b/ShareX.HelpersLib/Extensions/StringExtensions.cs index 11690691d..300c83d5a 100644 --- a/ShareX.HelpersLib/Extensions/StringExtensions.cs +++ b/ShareX.HelpersLib/Extensions/StringExtensions.cs @@ -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> ForEachBetween(this string text, string front, string back) { int f = 0; diff --git a/ShareX.UploadersLib/OtherServices/OCRSpace.cs b/ShareX.UploadersLib/OtherServices/OCRSpace.cs index a2981d549..4ff736138 100644 --- a/ShareX.UploadersLib/OtherServices/OCRSpace.cs +++ b/ShareX.UploadersLib/OtherServices/OCRSpace.cs @@ -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 arguments = new Dictionary(); 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)