static void Main(string[] args) { string testFile = null; try { // ** Make sure an api key has been entered if (API_KEY == string.Empty) { Console.WriteLine("[ERROR] Please update the sample code and enter the API Key that came with your subscription."); return; } // ** Was a 'file to OCR' specified on the command line? if (args.Count() == 0) { Console.WriteLine("[INFO] No file to OCR specified, using default file."); testFile = Directory.GetFiles(".", "*.tif")[0]; } else { testFile = args[0]; } // ** Specify the API key associated with your subscription. Configuration.Default.AddApiKey("api_key", API_KEY); // ** Accept all SSL Certificates, this makes life under mono a lot easier. This line is not needed on Windows ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; // ** The service's host name is already set, but for debugging purposes you may want to switch between 'http' and 'https'.' Configuration.Default.ApiClient.RestClient.BaseUrl = new Uri("https://api.muhimbi.com/api"); // ** We are dealing with OCR, so instantiate the relevant class OCRApi ocrApi = new OCRApi(); // ** Read the file we wish to OCR byte[] sourceFile = File.ReadAllBytes(testFile); // ** Fill out the data for the OCR operation. OcrTextData inputData = new OcrTextData( SourceFileName: testFile, // ** The name of the file to OCR. Always include the correct extension SourceFileContent: sourceFile, // ** The content of the file to OCR Language: OcrTextData.LanguageEnum.English, // ** The document's primary language Performance: OcrTextData.PerformanceEnum.Slowbutaccurate, // ** Unless you have a good reason not to, always use the 'Slow' option. CharactersOption: OcrTextData.CharactersOptionEnum.Blacklist, // ** Any characters to black list or white list (e.g. 1234567890 to deal with numerical data) Characters: "|", // ** In this example we blacklist the '|' (pipe) as it looks similar to l (L) 1 (one) and I (capital I) Paginate: false, // ** Only 'paginate' when your documents have images that span multiple pages. X: "36", // ** By default the entire page is OCRed, optionally specify an area (in pt., 1/72nd of an inch) Y: "72", Width: "400", Height: "30", PageNumber: "1" ); // ** Carry out the OCR operation Console.WriteLine("[INFO] Running OCR..."); var response = ocrApi.OcrText(inputData); // ** Writing the recognised text to the console Console.OutputEncoding = System.Text.Encoding.UTF8; Console.Write("[INFO] Extracted text: "); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(response.OutText); Console.ResetColor(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
static void Main(string[] args) { string testFile = null; try { // ** Make sure an api key has been entered if (API_KEY == string.Empty) { Console.WriteLine("[ERROR] Please update the sample code and enter the API Key that came with your subscription."); return; } // ** Was a 'file to OCR' specified on the command line? if (args.Count() == 0) { Console.WriteLine("[INFO] No file to OCR specified, using default file."); testFile = Directory.GetFiles(".", "*.tif")[0]; } else { testFile = args[0]; } // ** Specify the API key associated with your subscription. Configuration.Default.AddApiKey("api_key", API_KEY); // ** Accept all SSL Certificates, this makes life under mono a lot easier. This line is not needed on Windows ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; // ** The service's host name is already set, but for debugging purposes you may want to switch between 'http' and 'https'.' Configuration.Default.ApiClient.RestClient.BaseUrl = new Uri("https://api.muhimbi.com/api"); // ** We are dealing with OCR, so instantiate the relevant class OCRApi ocrApi = new OCRApi(); // ** Read the file we wish to OCR byte[] sourceFile = File.ReadAllBytes(testFile); // ** Fill out the data for the OCR operation. OcrPdfData inputData = new OcrPdfData( SourceFileName: testFile, // ** The name of the file to OCR. Always include the correct extension SourceFileContent: sourceFile, // ** The content of the file to OCR Language: OcrPdfData.LanguageEnum.English, // ** The document's primary language Performance: OcrPdfData.PerformanceEnum.Slowbutaccurate, // ** Unless you have a good reason not to, always use the 'Slow' option. CharactersOption: OcrPdfData.CharactersOptionEnum.None, // ** Any characters to black list or white list (e.g. 1234567890 to deal with numerical data) Characters: null, // ** The characters to black or white list. Paginate: false, // ** Only 'paginate' when your documents have images that span multiple pages. Regions: null // ** We want to OCR the entire document, not just specific areas. ); // ** Carry out the OCR operation Console.WriteLine("[INFO] Running OCR..."); var response = ocrApi.OcrPdf(inputData); // ** Write the results back to the file system File.WriteAllBytes(@"result.pdf", response.ProcessedFileContent); Console.WriteLine("[INFO] 'result.pdf' written to output folder."); // ** On Windows open the generated file in the system PDF viewer Process.Start(@"result.pdf"); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
static string UseImage(string url, string path) { HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new System.Uri(url)); Stream memStream = new MemoryStream(); webReq.Method = "POST"; string boundary = "--------------" + DateTime.Now.Ticks.ToString("x");// 边界符 webReq.ContentType = "multipart/form-data; boundary=" + boundary; byte[] enter = Encoding.ASCII.GetBytes("\r\n"); //换行 memStream.Write(enter, 0, enter.Length); Dictionary <string, string> dic = new Dictionary <string, string>() { { "appid", config.appid }, { "bucket", config.bucket } }; //写入文本字段 string inputPartHeaderFormat = "--" + boundary + "\r\n" + "Content-Disposition:form-data;name=\"{0}\";" + "\r\n\r\n{1}\r\n"; foreach (var kv in dic) { string inputPartHeader = string.Format(inputPartHeaderFormat, kv.Key, kv.Value); var inputPartHeaderBytes = Encoding.ASCII.GetBytes(inputPartHeader); memStream.Write(inputPartHeaderBytes, 0, inputPartHeaderBytes.Length); } var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read); // 写入文件 //压缩图片 string imagePartHeader = "--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" + "Content-Type: image/jpeg\r\n\r\n"; var header = string.Format(imagePartHeader, "image", "1.jpg"); var headerbytes = Encoding.UTF8.GetBytes(header); memStream.Write(headerbytes, 0, headerbytes.Length); var buffer = new byte[1024]; int bytesRead; while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) { memStream.Write(buffer, 0, bytesRead); } // 最后的结束符 byte[] endBoundary = Encoding.ASCII.GetBytes("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "\r\n" + boundary + "--\r\n"); memStream.Write(endBoundary, 0, endBoundary.Length); webReq.ContentLength = memStream.Length; webReq.Headers.Add(HttpRequestHeader.Authorization, OCRApi.HmacSha1Sign()); webReq.Host = config.Host; var requestStream = webReq.GetRequestStream(); memStream.Position = 0; memStream.CopyTo(requestStream); HttpWebResponse response = (HttpWebResponse)webReq.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8); var ret = sr.ReadToEnd(); sr.Close(); response.Close(); requestStream.Close(); memStream.Close(); return(ret); }