2013-08-16 9 views
7

Jestem nowicjuszem w świecie programowania i staram się opracować aplikację korzystającą z OCR. Chcę, aby aplikacja konwertowała pojedynczy paragon na tekst (nic zbyt skomplikowanego).OCR w systemie Windows Phone 8 WP8

Jednak mój problem polega na tym, że znajduję brak informacji o OCR na WP8 i jak go wdrożyć. Byłbym jednak przekonany, że jest on wbudowany w funkcję WP i że informacja będzie łatwo dostępna, jak ją wdrożyć.

Ktoś wie, gdzie mogę wyglądać, lub prosty przykładowy fragment kodu, z którego mógłbym skorzystać? Brak usługi subskrypcji.

+1

Windows Phone 8 nie obsługuje żadnej OCR API. możesz wypróbować bibliotekę zewnętrzną. Zajrzyj - http://www.leadtools.com/sdk/windows-phone/default.htm –

+0

@SadAlAbdullah, Pls ujął to jako odpowiedź, dodaj oświadczenie firmy Microsoft popierające twoją odpowiedź, abyśmy mogli zakończyć. – Eldho

Odpowiedz

1

Firma Microsoft wydała ostatnio bibliotekę OCR dla środowiska wykonawczego Windows. Jerry Nixon opublikował film, który prowadzi Cię przez to, i jest tam również artykuł msdn.

Jerry Nixon's Blog

MSDN

0

Można spróbować użyć tej samej usługi OCR, który używa Bing obiektywu. Jeśli jeszcze go nie wypróbowałeś: otwórz kamerę, zmień obiektyw na soczewkę bing i spróbuj go.

Punkt końcowy usługi to http://ocrrest.bingvision.net/V1. Daje również informacje o lokalizacji wykrytego tekstu wraz z polami ograniczającymi.

Prawdopodobnie analiza skrzypiec pomoże ci wysłać obraz w podobny sposób.

Mam mały fragment poniżej którego oczekuje obraz jako bajt tablicy

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