Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Chilkat2-Python) 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
import sys import chilkat2 # 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. imageData = chilkat2.BinData() # This image file contains some text... success = imageData.LoadFile("qa_data/jpg/text.jpg") if (success != True): print("Failed to load image file.") sys.exit() # Create the above JSON. json = chilkat2.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 http = chilkat2.Http() sb = chilkat2.StringBuilder() url = "https://vision.googleapis.com/v1/images:annotate?key=YOUR_API_KEY" # resp is a CkHttpResponse resp = http.PostJson3(url,"application/json",json) if (http.LastMethodSuccess != True): print(http.LastErrorText) sys.exit() print("status = " + str(resp.StatusCode)) # A 200 response status indicate success. if (resp.StatusCode != 200): print(resp.BodyStr) print("Failed.") sys.exit() sbResponseBody = chilkat2.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: 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 is a CkJsonObject 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 is a CkJsonObject 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 is a CkJsonObject 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 is a CkJsonObject 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 is a CkJsonObject 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 print("Success.") |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.