PRivate static void TesseractSample() { var testImagePath = "phototest.tif"; try { using (var engine = new TesseractEngine(@"../../tessdata", "eng", EngineMode.Default)) { using (var img = Pix.LoadFromFile(testImagePath)) { using (var page = engine.Process(img)) { var text = page.GetText(); Console.WriteLine("Mean confidence: {0}", page.GetMeanConfidence()); Console.WriteLine("Text (GetText): /r/n{0}", text); Console.WriteLine("Text (iterator):"); using (var iter = page.GetIterator()) { iter.Begin(); do { do { do { do { if (iter.IsAtBeginningOf(PageIteratorLevel.Block)) { Console.WriteLine("<BLOCK>"); } Console.Write(iter.GetText(PageIteratorLevel.Word)); Console.Write(" "); if (iter.IsAtFinalOf(PageIteratorLevel.TextLine, PageIteratorLevel.Word)) { Console.WriteLine(); } } while (iter.Next(PageIteratorLevel.TextLine, PageIteratorLevel.Word)); if (iter.IsAtFinalOf(PageIteratorLevel.Para, PageIteratorLevel.TextLine)) { Console.WriteLine(); } } while (iter.Next(PageIteratorLevel.Para, PageIteratorLevel.TextLine)); } while (iter.Next(PageIteratorLevel.Block, PageIteratorLevel.Para)); } while (iter.Next(PageIteratorLevel.Block)); } } } } } catch (Exception e) { Console.WriteLine("Unexpected Error: " + e.Message); Console.WriteLine("Details: "); Console.WriteLine(e.ToString()); } Console.WriteLine("Press anykey to end"); Console.ReadKey(); }使用MS cognitive做OCR1. 有一個(gè)Cognitive 的賬號(hào)。2. 準(zhǔn)備一個(gè)測(cè)試圖片3. 測(cè)試代碼:
... MS_OCRApi("phototest.tif");... static async void MS_OCRApi(string pathOfImage) { var client = new HttpClient(); var queryString = HttpUtility.ParseQueryString(string.Empty); const string API_KEY = "{your key}"; // Request headers client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", API_KEY); // Request parameters queryString["language"] = "unk"; queryString["detectOrientation "] = "true"; var uri = "https://westus.api.cognitive.microsoft.com/vision/v1.0/ocr?" + queryString; HttpResponseMessage response; // Request body byte[] byteData = File.ReadAllBytes(pathOfImage); using (var content = new ByteArrayContent(byteData)) { content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); response = await client.PostAsync(uri, content); var s = new MemoryStream(); await response.Content.CopyToAsync(s); var str = Encoding.UTF8.GetString(s.ToArray()); var results = JsonConvert.DeserializeObject<MsOCRResult>(str); Console.WriteLine("Results :"); var lines = results.regions.SelectMany(x => x.lines); foreach (var ocrLine in lines) { Console.WriteLine(ocrLine); } Console.ReadKey(); } }對(duì)比兩種OCR:1. MS Cognitive Service是RESTful api based,支持多種客戶端而且不用關(guān)心機(jī)器學(xué)習(xí)過(guò)程,但是收費(fèi)(每月5000個(gè)call,1分鐘20個(gè)call免費(fèi))。不過(guò)可考慮使用緩存來(lái)降低成本。2. Tesseract是dll based。因此需要不斷更新訓(xùn)練數(shù)據(jù),如果需要支持多客戶端,需要自己wrap一個(gè)RESTful。好處就是免費(fèi)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注