2013-08-16 136 views
7

我是新來的編程世界,並且正在嘗試開發一個使用OCR的應用程序。 我想要應用程序將單數收據轉換爲文本(沒有太複雜的)。Windows Phone 8上的OCR WP8

然而,我的問題是,我發現缺乏WP8上的OCR信息,以及如何實現它。 雖然這是WP的內置函數,但如何實現它,這些信息將很容易獲取。

任何人都知道我可以在哪裏看,或者我可以使用一個簡單的示例代碼片段? 不需要基於訂閱的服務。

+1

的Windows 8手機不支持任何OCR API。你可以嘗試一些外部庫。看一看 - http://www.leadtools.com/sdk/windows-phone/default.htm –

+0

@SadAlAbdullah,請把這個作爲答案,添加微軟聲明支持你的答案,這樣我們就可以結束了。 – Eldho

回答

1

微軟最近發佈了Windows運行時的OCR庫。傑里尼克森已經發布了一個視頻,指導你通過它,還有一個msdn文章。

Jerry Nixon's Blog

MSDN

0

您可以嘗試使用Bing的鏡頭使用相同的OCR服務。如果您還沒有嘗試過:打開相機,將鏡頭更換爲鏡頭並嘗試一下

服務終點是http://ocrrest.bingvision.net/V1。它還爲您提供了有關檢測到的文本與邊界框位置的信息。

可能有些提琴手分析會幫助您以類似的方式發送圖像。

我有一個小片段低於預期的圖像作爲字節數組

public static readonly string ocrServiceUrl = "http://ocrrest.bingvision.net/V1";   // was: "platform.bing.com/ocr/V1"; 
    public static readonly string ocrLanguage = "en"; 

    public static async Task<JsonObject> MakeOcrJSON(byte[] image) 
    { 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Format("{0}/Recognize/{1}", ocrServiceUrl, ocrLanguage)); 
     request.Method = "POST"; 

     using (Stream requestStream = await request.GetRequestStreamAsync()) 
     { 
      requestStream.Write(image, 0, image.Length); 
     } 

     try 
     { 
      using (HttpWebResponse response = (HttpWebResponse) (await request.GetResponseAsync())) 
      { 
       using (var responseStream = new StreamReader(response.GetResponseStream())) 
       { 
        var json = JsonObject.Parse(responseStream.ReadToEnd()); 
        return json; 
       } 
      } 
     } 
     catch (WebException we) 
     { 
      using (Stream responseStream = we.Response.GetResponseStream()) 
      { 
       DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(OcrResponse)); 
       OcrResponse ocrResponse = (OcrResponse)serializer.ReadObject(responseStream); 
       string ErrorMessage = "Unknown Error"; 
       if (ocrResponse.OcrFault.HasValue) 
       { 
        ErrorMessage = string.Format(
         "HTTP status code: {0} Message: {1}", 
         ocrResponse.OcrFault.Value.HttpStatusCode, 
         ocrResponse.OcrFault.Value.Message); 
       } 
       throw new Exception(ErrorMessage); 
      } 
     } 
    }