Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Sample/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ dependencies {
//
// Use the following line to include client library for Vision API from Maven Central Repository
//
compile 'com.microsoft.projectoxford:vision:1.0.394'
//compile 'com.microsoft.projectoxford:vision:1.0.394'
compile 'com.android.support:appcompat-v7:25.0.0'
compile files('libs/gson-2.3.1.jar')
compile files('libs/vision.jar')
}
Binary file added Sample/app/libs/vision.jar
Binary file not shown.
4 changes: 2 additions & 2 deletions Sample/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@
android:value="com.microsoft.projectoxford.visionsample.MainActivity" />
</activity>
<activity
android:name=".HandwritingRecognizeActivity"
android:label="@string/title_activity_handwriting_recognize"
android:name=".OneOCRRecognizeActivity"
android:label="@string/title_activity_oneocr_recognize"
android:parentActivityName=".MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public void activityDescribe(View v) {

public void activityHandwriting(View v)
{
Intent intent =new Intent(this, HandwritingRecognizeActivity.class);
Intent intent =new Intent(this, OneOCRRecognizeActivity.class);
startActivity(intent);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,17 @@
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import com.google.gson.Gson;
import com.microsoft.projectoxford.vision.VisionServiceClient;
import com.microsoft.projectoxford.vision.VisionServiceRestClient;
import com.microsoft.projectoxford.vision.contract.HandwritingRecognitionOperation;
import com.microsoft.projectoxford.vision.contract.HandwritingRecognitionOperationResult;
import com.microsoft.projectoxford.vision.contract.HandwritingTextLine;
import com.microsoft.projectoxford.vision.contract.HandwritingTextWord;
import com.microsoft.projectoxford.vision.contract.TextRecognitionMode;
import com.microsoft.projectoxford.vision.contract.TextRecognitionOperation;
import com.microsoft.projectoxford.vision.contract.TextRecognitionOperationResult;
import com.microsoft.projectoxford.vision.contract.TextRecognitionLine;
import com.microsoft.projectoxford.vision.contract.TextRecognitionWord;
import com.microsoft.projectoxford.vision.rest.VisionServiceException;
import com.microsoft.projectoxford.visionsample.helper.ImageHelper;

Expand All @@ -61,17 +64,32 @@
import java.io.IOException;
import java.lang.ref.WeakReference;

public class HandwritingRecognizeActivity extends ActionBarActivity {
public class OneOCRRecognizeActivity extends ActionBarActivity {

// Flag to indicate which task is to be performed.
private static final int REQUEST_SELECT_IMAGE = 0;

// The button to select an image
private Button buttonSelectImage;

// The radio button to select mode
private RadioGroup groupSelectMode;

// Handwritten mode
private RadioButton buttonHandwritten;

// Printed mode
private RadioButton buttonPrinted;

// The button to send an image.
private Button buttonSend;

// The URI of the image selected to detect.
private Uri imagUrl;

// The mode selected for recognition, default printed.
private TextRecognitionMode mode = TextRecognitionMode.Printed;

// The image selected to detect.
private Bitmap bitmap;

Expand All @@ -86,20 +104,37 @@ public class HandwritingRecognizeActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recognize_handwriting);
setContentView(R.layout.activity_recognize_oneocr);

if (client == null) {
client = new VisionServiceRestClient(getString(R.string.subscription_key), getString(R.string.subscription_apiroot));
}

buttonSelectImage = (Button) findViewById(R.id.buttonSelectImage);
groupSelectMode = (RadioGroup) findViewById(R.id.groupSelectMode);
buttonHandwritten = (RadioButton) findViewById(R.id.buttonHandwritten);
buttonPrinted = (RadioButton) findViewById(R.id.buttonPrinted);
buttonSend = (Button) findViewById(R.id.buttonSend);
editText = (EditText) findViewById(R.id.editTextResult);

groupSelectMode.setOnCheckedChangeListener(changeRadio);
}

private RadioGroup.OnCheckedChangeListener changeRadio = new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == buttonHandwritten.getId()) {
mode = TextRecognitionMode.Handwritten;
} else if (checkedId == buttonPrinted.getId()) {
mode = TextRecognitionMode.Printed;
}
}
};

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_recognize, menu);
getMenuInflater().inflate(R.menu.menu_recognize_oneocr, menu);
return true;
}

Expand All @@ -123,10 +158,15 @@ public void selectImage(View view) {
editText.setText("");

Intent intent;
intent = new Intent(HandwritingRecognizeActivity.this, com.microsoft.projectoxford.visionsample.helper.SelectImageActivity.class);
intent = new Intent(OneOCRRecognizeActivity.this, com.microsoft.projectoxford.visionsample.helper.SelectImageActivity.class);
startActivityForResult(intent, REQUEST_SELECT_IMAGE);
}

public void sendImage(View view)
{
doRecognize();
}

// Called when image selection is done.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Expand All @@ -147,8 +187,6 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Add detection log.
Log.d("AnalyzeActivity", "Image: " + imagUrl + " resized to " + bitmap.getWidth()
+ "x" + bitmap.getHeight());

doRecognize();
}
}
break;
Expand Down Expand Up @@ -177,9 +215,10 @@ private String process() throws VisionServiceException, IOException, Interrupted
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);
try (ByteArrayInputStream inputStream = new ByteArrayInputStream(output.toByteArray())) {
//post image and got operation from API
HandwritingRecognitionOperation operation = this.client.createHandwritingRecognitionOperationAsync(inputStream);
Log.d("Mode", mode.toString());
TextRecognitionOperation operation = this.client.createTextRecognitionOperationAsync(inputStream, mode);

HandwritingRecognitionOperationResult operationResult;
TextRecognitionOperationResult operationResult;
//try to get recognition result until it finished.

int retryCount = 0;
Expand All @@ -188,7 +227,7 @@ private String process() throws VisionServiceException, IOException, Interrupted
throw new InterruptedException("Can't get result after retry in time.");
}
Thread.sleep(1000);
operationResult = this.client.getHandwritingRecognitionOperationResultAsync(operation.Url());
operationResult = this.client.getTextRecognitionOperationResultAsync(operation.Url());
}
while (operationResult.getStatus().equals("NotStarted") || operationResult.getStatus().equals("Running"));

Expand All @@ -210,10 +249,10 @@ private static class doRequest extends AsyncTask<String, String, String> {
// Store error message
private Exception e = null;

private WeakReference<HandwritingRecognizeActivity> recognitionActivity;
private WeakReference<OneOCRRecognizeActivity> recognitionActivity;

public doRequest(HandwritingRecognizeActivity activity) {
recognitionActivity = new WeakReference<HandwritingRecognizeActivity>(activity);
public doRequest(OneOCRRecognizeActivity activity) {
recognitionActivity = new WeakReference<OneOCRRecognizeActivity>(activity);
}

@Override
Expand Down Expand Up @@ -242,15 +281,15 @@ protected void onPostExecute(String data) {
this.e = null;
} else {
Gson gson = new Gson();
HandwritingRecognitionOperationResult r = gson.fromJson(data, HandwritingRecognitionOperationResult.class);
TextRecognitionOperationResult r = gson.fromJson(data, TextRecognitionOperationResult.class);

StringBuilder resultBuilder = new StringBuilder();
//if recognition result status is failed. display failed
if (r.getStatus().equals("Failed")) {
resultBuilder.append("Error: Recognition Failed");
} else {
for (HandwritingTextLine line : r.getRecognitionResult().getLines()) {
for (HandwritingTextWord word : line.getWords()) {
for (TextRecognitionLine line : r.getRecognitionResult().getLines()) {
for (TextRecognitionWord word : line.getWords()) {
resultBuilder.append(word.getText() + " ");
}
resultBuilder.append("\n");
Expand Down
2 changes: 1 addition & 1 deletion Sample/app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
<Button
android:layout_width="267dp"
android:layout_height="wrap_content"
android:text="Recognize Handwriting Text"
android:text="OneOCR Recognize Text V2.0"
android:id="@+id/button"
android:layout_gravity="center_horizontal"
android:onClick="activityHandwriting"
Expand Down
62 changes: 0 additions & 62 deletions Sample/app/src/main/res/layout/activity_recognize_handwriting.xml

This file was deleted.

107 changes: 107 additions & 0 deletions Sample/app/src/main/res/layout/activity_recognize_oneocr.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.microsoft.projectoxford.visionsample.OneOCRRecognizeActivity">

<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:text="Select an image to recognize handwriting text"/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">

<Button
android:id="@+id/buttonSelectImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:elevation="0dp"
android:onClick="selectImage"
android:text="Select Image" />

<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Mode:" />

<RadioGroup
android:id="@+id/groupSelectMode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checkedButton="@+id/buttonPrinted">

<RadioButton
android:id="@+id/buttonHandwritten"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Handwritten" />

<RadioButton
android:id="@+id/buttonPrinted"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Printed" />

</RadioGroup>

<Button
android:id="@+id/buttonSend"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="sendImage"
android:text="Send" />

</LinearLayout>

<ImageView
android:id="@+id/selectedImage"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_margin="6dp"
android:layout_toEndOf="@+id/image_control"
android:layout_toRightOf="@+id/image_control"
android:layout_weight="1"
android:background="#E0E0E0" />

</LinearLayout>

<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="1.03" >

<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="textMultiLine"
android:ems="10"
android:id="@+id/editTextResult"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
Loading