7

私はプログラミングの世界に不慣れで、OCR を使用するアプリを開発しようとしています。単数形のレシートをテキストに変換するアプリが必要です (あまり複雑ではありません)。

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

私がどこを見ることができるか、または私が使用できるコードの簡単なサンプルスニペットを知っている人はいますか? サブスクリプションベースのサービスを望まない。

4

2 に答える 2

1

Microsoft は最近、Windows ランタイム用の OCR ライブラリをリリースしました。Jerry Nixon は、それを説明するビデオを投稿しており、msdn の記事もあります。

ジェリー・ニクソンのブログ

MSDN

于 2014-09-22T04:58:17.387 に答える
0

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

サービス エンドポイントは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);
            }
        }
    }
于 2015-02-24T14:05:36.417 に答える