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 回答