
package edu.wetisai.ocr;

import edu.wetisai.ocr.R;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {
    private ImageView image;
    private TextView tessResults;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findView();
    }

    private void findView() {
        image = findViewId(R.id.image);
        tessResults = findViewId(R.id.results);
    }

    private <T extends View> T findViewId(int resId) {
        return (T) findViewById(resId);
    }

    private Bitmap getTextImage(String text, int width, int height) {
        final Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        final Paint paint = new Paint();
        final Canvas canvas = new Canvas(bmp);

        canvas.drawColor(Color.WHITE);

        paint.setColor(Color.BLACK);
        paint.setAntiAlias(true);
        paint.setTextAlign(Align.CENTER);
        paint.setTextSize(24.0f);
        canvas.drawText(text, width / 2, height / 2, paint);

        return bmp;
    }

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

@@ -31,27 +31,243 @@
 ort 
-edu.wetisai.ocr.R;%0A
+com.googlecode.tesseract.android.TessBaseAPI;%0A%0Aimport android.graphics.Bitmap;%0Aimport android.graphics.Canvas;%0Aimport android.graphics.Color;%0Aimport android.graphics.Paint;%0Aimport android.graphics.Paint.Align;%0Aimport android.os.Bundle;
 %0Aimp
@@ -316,34 +316,8 @@
 ty;%0A
-import android.os.Bundle;%0A
 impo
@@ -576,16 +576,81 @@
 Results;
+%0A    private Bitmap mTextBitmap;%0A    private TessBaseAPI baseApi;
 %0A%0A    @O
@@ -825,16 +825,548 @@
 dView();
+%0A%0A        mTextBitmap = getTextImage(%22%E4%BD%A0%E5%A5%BD%22, 300, 300);%0A        image.setImageBitmap(mTextBitmap);%0A%0A        baseApi = new TessBaseAPI();%0A        baseApi.init(%22/mnt/sdcard/tesseract/%22, %22chi_tra%22);%0A        baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_SINGLE_LINE);%0A        baseApi.setImage(mTextBitmap);%0A        String outputText = baseApi.getUTF8Text();%0A        tessResults.setText(outputText);%0A    %7D%0A%0A    @Override%0A    protected void onDestroy() %7B%0A        mTextBitmap.recycle();%0A        baseApi.end();%0A        super.onDestroy();
 %0A    %7D%0A%0A
@@ -2789,10 +2789,11 @@
 ;%0A    %7D%0A
+%0A
 %7D%0A

Use TessBaseAPI