Windows Phone 8(WP8)上的OCR

7
我是一个新手程序员,正在尝试开发一个使用OCR技术的应用程序。我希望这个应用程序能够将一个单独的收据转换成文本(不需要太复杂的功能)。
然而,我的问题是,在WP8上,我找不到足够的OCR信息以及如何实现它。我本以为这是WP的内置功能,并且有关如何实现它的信息很容易获得。
请问有人知道我可以去哪里寻找信息,或者有没有简单的代码示例片段可以使用?不想使用订阅服务。

1
Windows Phone 8不支持任何OCR API。您可以尝试使用一些外部库。请看这里 - http://www.leadtools.com/sdk/windows-phone/default.htm - Sad Al Abdullah
@SadAlAbdullah,请将此作为答案,附加微软支持您的答案的声明,以便我们可以结束讨论。 - Eldho
2个回答

1
微软最近发布了Windows Runtime的OCR库。Jerry Nixon发布了一段视频来指导您使用它,同时还有一个msdn文章。

Jerry Nixon的博客

MSDN


0

你可以尝试使用与Bing Lens相同的OCR服务。如果你还没有尝试过,请打开相机,将镜头切换到Bing Lens并试用一下。

该服务的端点是http://ocrrest.bingvision.net/V1。它还会提供有关检测到的文本位置及其边界框的信息。

可能需要进行一些Fiddler分析,以便以类似的方式发送您的图像。

我在下面放了一个小片段,它期望图像作为字节数组。

    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);
            }
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接