Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(C# UWP/WinRT) Google Cloud Vision Text DetectionDemonstrates calling the Google Cloud Vision for text detection (performs Optical Character Recognition). "Detects and extracts text within an image with support for a broad range of languages. It also features automatic language identification." See https://cloud.google.com/vision/docs/detecting-text
// This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // Build the following request: // { // "requests": [ // { // "image": { // "content": "/9j/7QBEUGhvdG9zaG9...base64-encoded-image-content...fXNWzvDEeYxxxzj/Coa6Bax//Z" // }, // "features": [ // { // "type": "TEXT_DETECTION" // } // ] // } // ] // } // Use this online tool to generate the code from sample JSON: // Generate Code to Create JSON // Load an image file. Chilkat.BinData imageData = new Chilkat.BinData(); // This image file contains some text... bool success = imageData.LoadFile("qa_data/jpg/text.jpg"); if (success != true) { Debug.WriteLine("Failed to load image file."); return; } // Create the above JSON. Chilkat.JsonObject json = new Chilkat.JsonObject(); json.UpdateBd("requests[0].image.content","base64",imageData); json.UpdateString("requests[0].features[0].type","TEXT_DETECTION"); // Send the following POST with the HTTP request body containing the above JSON. // POST https://vision.googleapis.com/v1/images:annotate?key=YOUR_API_KEY Chilkat.Http http = new Chilkat.Http(); Chilkat.StringBuilder sb = new Chilkat.StringBuilder(); string url = "https://vision.googleapis.com/v1/images:annotate?key=YOUR_API_KEY"; Chilkat.HttpResponse resp = await http.PostJson3Async(url,"application/json",json); if (http.LastMethodSuccess != true) { Debug.WriteLine(http.LastErrorText); return; } Debug.WriteLine("status = " + Convert.ToString(resp.StatusCode)); // A 200 response status indicate success. if (resp.StatusCode != 200) { Debug.WriteLine(resp.BodyStr); Debug.WriteLine("Failed."); return; } Chilkat.StringBuilder sbResponseBody = new Chilkat.StringBuilder(); resp.GetBodySb(sbResponseBody); sbResponseBody.WriteFile("qa_output/textDetectResponse.json","utf-8",false); json.LoadSb(sbResponseBody); // The response is a JSON document like this: // Use this online tool to generate parsing code from sample JSON: // Generate Parsing Code from JSON // { // "responses": [ // { // "textAnnotations": [ // { // "locale": "en", // "description": "Chilkat is a cross-language, cross-platform\nAPl providing 90+ classes for many Internet\nprotocols, formats, and algorithms.\n", // "boundingPoly": { // "vertices": [ // { // "x": 17, // "y": 14 // }, // ... // ] // } // ], // "text": "Chilkat is a cross-language, cross-platform\nAPl providing 90+ classes for many Internet\nprotocols, formats, and algorithms.\n" // } // } // ] // } // The parsing code generated from the online tool: int i; int count_i; string fullTextAnnotationText; int j; int count_j; string locale; string description; int k; int count_k; int x; int y; int width; int height; string languageCode; string blockType; int i1; int count_i1; Chilkat.JsonObject json1 = null; int j1; int count_j1; int k1; int count_k1; string text; string propertyDetectedBreakType; int i2; int count_i2; Chilkat.JsonObject json2 = null; i = 0; count_i = json.SizeOfArray("responses"); while (i < count_i) { json.I = i; fullTextAnnotationText = json.StringOf("responses[i].fullTextAnnotation.text"); j = 0; count_j = json.SizeOfArray("responses[i].textAnnotations"); while (j < count_j) { json.J = j; locale = json.StringOf("responses[i].textAnnotations[j].locale"); description = json.StringOf("responses[i].textAnnotations[j].description"); k = 0; count_k = json.SizeOfArray("responses[i].textAnnotations[j].boundingPoly.vertices"); while (k < count_k) { json.K = k; x = json.IntOf("responses[i].textAnnotations[j].boundingPoly.vertices[k].x"); y = json.IntOf("responses[i].textAnnotations[j].boundingPoly.vertices[k].y"); k = k + 1; } j = j + 1; } j = 0; count_j = json.SizeOfArray("responses[i].fullTextAnnotation.pages"); while (j < count_j) { json.J = j; width = json.IntOf("responses[i].fullTextAnnotation.pages[j].width"); height = json.IntOf("responses[i].fullTextAnnotation.pages[j].height"); k = 0; count_k = json.SizeOfArray("responses[i].fullTextAnnotation.pages[j].property.detectedLanguages"); while (k < count_k) { json.K = k; languageCode = json.StringOf("responses[i].fullTextAnnotation.pages[j].property.detectedLanguages[k].languageCode"); k = k + 1; } k = 0; count_k = json.SizeOfArray("responses[i].fullTextAnnotation.pages[j].blocks"); while (k < count_k) { json.K = k; blockType = json.StringOf("responses[i].fullTextAnnotation.pages[j].blocks[k].blockType"); json1 = json.ObjectOf("responses[i].fullTextAnnotation.pages[j].blocks[k]"); i1 = 0; count_i1 = json1.SizeOfArray("property.detectedLanguages"); while (i1 < count_i1) { json1.I = i1; languageCode = json1.StringOf("property.detectedLanguages[i].languageCode"); i1 = i1 + 1; } json1 = json.ObjectOf("responses[i].fullTextAnnotation.pages[j].blocks[k]"); i1 = 0; count_i1 = json1.SizeOfArray("boundingBox.vertices"); while (i1 < count_i1) { json1.I = i1; x = json1.IntOf("boundingBox.vertices[i].x"); y = json1.IntOf("boundingBox.vertices[i].y"); i1 = i1 + 1; } json1 = json.ObjectOf("responses[i].fullTextAnnotation.pages[j].blocks[k]"); i1 = 0; count_i1 = json1.SizeOfArray("paragraphs"); while (i1 < count_i1) { json1.I = i1; j1 = 0; count_j1 = json1.SizeOfArray("paragraphs[i].property.detectedLanguages"); while (j1 < count_j1) { json1.J = j1; languageCode = json1.StringOf("paragraphs[i].property.detectedLanguages[j].languageCode"); j1 = j1 + 1; } j1 = 0; count_j1 = json1.SizeOfArray("paragraphs[i].boundingBox.vertices"); while (j1 < count_j1) { json1.J = j1; x = json1.IntOf("paragraphs[i].boundingBox.vertices[j].x"); y = json1.IntOf("paragraphs[i].boundingBox.vertices[j].y"); j1 = j1 + 1; } j1 = 0; count_j1 = json1.SizeOfArray("paragraphs[i].words"); while (j1 < count_j1) { json1.J = j1; k1 = 0; count_k1 = json1.SizeOfArray("paragraphs[i].words[j].property.detectedLanguages"); while (k1 < count_k1) { json1.K = k1; languageCode = json1.StringOf("paragraphs[i].words[j].property.detectedLanguages[k].languageCode"); k1 = k1 + 1; } k1 = 0; count_k1 = json1.SizeOfArray("paragraphs[i].words[j].boundingBox.vertices"); while (k1 < count_k1) { json1.K = k1; x = json1.IntOf("paragraphs[i].words[j].boundingBox.vertices[k].x"); y = json1.IntOf("paragraphs[i].words[j].boundingBox.vertices[k].y"); k1 = k1 + 1; } k1 = 0; count_k1 = json1.SizeOfArray("paragraphs[i].words[j].symbols"); while (k1 < count_k1) { json1.K = k1; text = json1.StringOf("paragraphs[i].words[j].symbols[k].text"); propertyDetectedBreakType = json1.StringOf("paragraphs[i].words[j].symbols[k].property.detectedBreak.type"); json2 = json1.ObjectOf("paragraphs[i].words[j].symbols[k]"); i2 = 0; count_i2 = json2.SizeOfArray("property.detectedLanguages"); while (i2 < count_i2) { json2.I = i2; languageCode = json2.StringOf("property.detectedLanguages[i].languageCode"); i2 = i2 + 1; } json2 = json1.ObjectOf("paragraphs[i].words[j].symbols[k]"); i2 = 0; count_i2 = json2.SizeOfArray("boundingBox.vertices"); while (i2 < count_i2) { json2.I = i2; x = json2.IntOf("boundingBox.vertices[i].x"); y = json2.IntOf("boundingBox.vertices[i].y"); i2 = i2 + 1; } k1 = k1 + 1; } j1 = j1 + 1; } i1 = i1 + 1; } k = k + 1; } j = j + 1; } i = i + 1; } Debug.WriteLine("Success."); |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.