Camera Captured Address Recognition and Structuring API REFERENCE

This section presents code snippets for using CLE CCARS API with JAVA.

1.The service takes two arguments (encoded image and access token) in JSON format.

                    
String accessToken = "<<your access token>>";
// IMAGE_TYPE is JPEG,JPG...etc
String encoded_input = encodeToString(PLACE_YOUR_BUFFERED_IMAGE,PLACE_YOUR_IMAGE_TYPE);
String JSON_MSG = "{\"token\" : \"" + accessToken+ ",\"image\" : \"" + encoded_input + "\" }";

                    
                

2. Use JAVA HTTP client for connecting to the web service as shown below. The Apache HttpCore and Apache HttpClient libraries are required which can be downloaded from the Link.

                    
String URL = "api.cle.org.pk";
String postURL = "https://" + URL + "/v1/autoparr";
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(postURL);
StringEntity postingString = new StringEntity(JSON_MSG,"UTF-8");
post.setEntity(postingString);
post.setHeader("Content-type", "application/json;odata=verbose");
HttpResponse response = httpClient.execute(post);
String JSON_Response=convertStreamToString(response.getEntity().getContent());
                    
                

3. This method take BufferedImage and Image Type as input and return the base64 encoded string.

                    
        private static String encodeToString(BufferedImage image, String type) {
        String imageString = null;
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
 
        try {
            ImageIO.write(image, type, bos);
            byte[] imageBytes = bos.toByteArray();
 
            
            imageString = Base64.encodeBase64String(imageBytes);
 
            bos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return imageString;
}

                

4. The method will return a HTTP response message. The JSON message can be extracted from the HTTP response using the following function. The JSON message contains status and tagged_text which can be processed.

                    
       private static String convertStreamToString(InputStream is) {

        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();

        String line = null;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sb.toString();
 }