private ArrayList<ArrayList<String>> performRecognition(Client restClient, byte [] file) throws Exception {

		String language = "English";

		ProcessingSettings settings = new ProcessingSettings();
		settings.setLanguage(language);
		settings.setOutputFormat(ProcessingSettings.OutputFormat.txt);

		Task task = null;
		task = restClient.processImage(file, settings);

		while (task.isTaskActive()) {

			Thread.sleep(5000);
			task = restClient.getTaskStatus(task.Id);
		}

		ArrayList<ArrayList<String>> table = new ArrayList<ArrayList<String>>();

		if (task.Status == Task.TaskStatus.Completed) {
			URL url = new URL(task.DownloadUrl);
			URLConnection connection = url.openConnection();

			BufferedInputStream reader = new BufferedInputStream(connection.getInputStream());

			byte[] contents = new byte[1024];

			int bytesRead = 0;
			String strFileContents = "";
			while ((bytesRead = reader.read(contents)) != -1) {
				strFileContents = new String(contents, 0, bytesRead);
			}
			
			String[] rows = strFileContents.split("\\r?\\n");
			
			for(String row : rows) {
				
				String[] columns = row.split("\t");
				ArrayList<String> clmns = new ArrayList<String>(Arrays.asList(columns));
				
				table.add(clmns);
			}			

		} else if (task.Status == Task.TaskStatus.NotEnoughCredits) {
			// TODO: Handle this error
		} else {
			// TODO: Handle this error
		}
		
		return table;
	}