2013-08-16 7 views
7

私はプログラミングの世界では初めて、OCRを使用するアプリケーションの開発を試みています。 私は、単数のレシートをテキストに変換したい(複雑すぎるものは何もありません)。OCR with Windows Phone 8 WP8

私の問題は、私がWP8上のOCRの情報が不足していることと、それを実装する方法があることです。 私はそれがWPの機能に組み込まれていて、その情報はそれをどのように実装するかについて簡単にアクセス可能であると思います。

私は誰がどこから見えるのか、わかりやすいコードスニペットを知っていますか? サブスクリプションベースのサービスを望んでいません。

+1

として画像を期待し、それ以下の小さなスニペットを持っています。あなたはいくつかの外部ライブラリを試すことができます。 - http://www.leadtools.com/sdk/windows-phone/default.htm –

+0

@SadAlAbdullah、Plsがこれを答えにして、答えを裏付けるMicrosoftの声明を追加して、それを終了させることができます。 – Eldho

答えて

1

Microsoftは最近、Windowsランタイム用のOCRライブラリをリリースしました。 Jerry Nixonはあなたにそれを案内するビデオを掲載しました。また、msdnの記事もあります。

Jerry Nixon's Blog

MSDN

0

あなたはBingのレンズが使用するのと同じOCRサービスを使用して試すことができます。試していない場合は、カメラを開き、レンズをビンレンズに変更して試してみてください。

サービスエンドポイントはhttp://ocrrest.bingvision.net/V1です。また、検出されたテキストの位置に関する情報をバウンディングボックスで表示します。

おそらく、いくつかのフィドラー解析は、同様の方法でイメージを送信するのに役立ちます。

私は、Windowsの携帯電話8は、任意のOCRのAPIをサポートしていないバイト配列

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); 
      } 
     } 
    } 
関連する問題