วันอาทิตย์ที่ 21 กรกฎาคม พ.ศ. 2556

Making OCR Android App with Tesseract OCR : ทดลองเขียนแอพลิเคชั่น OCR

หลังจากที่เราได้พูดถึงการ Build Library OCR ไปแล้ว  วันนี้เราจะมาพูดถึงการนำไปใช้  และตัวอย่าง Code นะคะ

1. สร้าง Project ใหม่




2. คลิกขวาที่ Project ที่สร้างขึ้นมา เลือก Properties






อันนี้จะเป็นการนำ ไลบรารี่มาใช้  ต่อไปมาลองเขียนโค้ดกัน


ลองมาเขียนโค้ดกันดูนะคะ 

1. นี่จะเป็นหน้าตาคร่าวๆ ของ Layout นะคะ




*ก็จะมี Button ImageView แล้วก็ TextView 

Code ของ Layout main.xml คร่าวๆ 



2. โหลด tainned data จาก Tesseract tainned data (เลือกภาษาที่ต้องการ)  โหลดมาแล้วแตกไฟล์  จากนั้น Copy Folder นั้นใส่ SDCARD

3. ส่วนนี่จะเป็นส่วนของ Code

public class Main extends Activity {
ImageView image1;
Bitmap bit;
String tag = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String mRelativeFolderPath = "/ชื่อโฟลเดอร์ที่เก็บภาพ/";
String mBaseFolderPath = Environment.getExternalStorageDirectory().getAbsolutePath() +                                                                   mRelativeFolderPath;
String filePath = mBaseFolderPath  + "ชื่อภาพ.jpg";
image1 = (ImageView)findViewById(R.id.imageView1);
bit = BitmapFactory.decodeFile(filePath);

image1.setImageBitmap(bit);

Button button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
TessBaseAPI baseApi = new TessBaseAPI();
String pathFolder = "/ชื่อโฟลเดอร์ที่มีไฟล์ tainned data/";
String Path = Environment.getExternalStorageDirectory().getAbsolutePath() + pathFolder;

baseApi.init(Path , "lang");
                baseApi.setImage(bit);
 
String text = baseApi.getUTF8Text();
TextView txt = (TextView)findViewById(R.id.textView1);
txt.setText(text);
Toast.makeText(Main.this, text,Toast.LENGTH_LONG ).show();
baseApi.end();
}
});

}

}

*ส่วน Manifest ไม่มีอะไรเปลี่ยนแปลง

หมายเหตุุ datapath นี้สำหรับ android API(จำไม่ได้ แหะๆ ) ขึ้นไปจะใช้ Environment.getExternalStorageDirectory() ถ้าต่ำกว่านั้นสามารถใช้ baseApi.init("/mnt/sdcard/tesseract/", "eng"); ได้

ศึกษาเรื่อง Directory เพิ่มเติม http://developer.android.com/reference/android/os/Environment.html

วันเสาร์ที่ 20 กรกฎาคม พ.ศ. 2556

สร้างไลบรารี่ Tesseract OCR เพื่อใช้งานบนระบบปฎิบัติการ Android : Library OCR on Android with Tesseract

ก่อนอื่นเราจะมาทำความรู้จักกับคำว่า OCR กันก่อน

        OCR หรือ optical character recognition คือการรู้จำอักขระด้วยแสง หรือก็คือการแปลงไฟล์ภาพเอกสาร ให้เป็นไฟล์ข้อความโดยอัตโนมัติ
        ทีนี้เมื่อเราจะนำ OCR มาใช้กับการเขียน Application บนระบบปฎิบัติการ Android เนี่ย ( ซึ่งในที่นี้เราเลือกใช้ OCR ที่ชื่อ Tesseract )   เราจะเรียกใช้ด้วย Library  ของมัน  แต่ก่อนอื่นต้องมีการ Build Library ก่อนนะคะ  มีขั้นตอนดังนี้

* อย่าลืมติดตั้ง Android NDK แล้วก็ Apace Ant ด้วย

1. โหลด source หรือ clone จากลิงค์นี้ https://github.com/rmtheis/tess-two โปรเจคนี้จะมี tools สำหรับคอมไพล์  Tesseract, Leptonica และ JPEG libraries สำหรับใช้งานบน Android. และเป็น Eclipse Android library

2. Build project นี้โดยใช้ commands (ของ Linux จะสะดวกกว่า  แนะนำให้ใช้ Terminal ของ Ubuntu ในการ Build ) พิมพ์คำสั่งดังนี้

- เข้าไปที่ project-directory ของ project tess-two ด้วยคำสั่ง

cd <project-directory>/tess-two

- ก่อนจะใช้คำสั่ง ndk-build อย่าลืม set path   Android  NDK (วิธี set path บน Ubuntu)

ndk-build

android update project --path .

- ก่อนจะใช้คำสั่ง ant release อย่าลืม set path   Apace Ant (วิธีการคล้ายๆ กับการ  set path   Android  NDK )

ant release

เป็นอันเสร็จขั้นตอนการ  Build project library


ต่อไปจะเป็นการนำ project นี้ไปทำเป็น library

ในที่นี้เราจะใช้ร่วมกับ Eclipse นะคะ

1. เปิด Eclipse ขึ้นมา



2. import project tess-two 

       - File > Import


       - เลือก Existing Projects into Workspace


       - คลิก Browser  แล้วเลือก Folder ที่จะ import คลิก OK > finish

2. ทำให้ Project ที่ import เข้ามาเป็น Library
   
        - คลิกขวาที่ Project   tess-two > properties

      - Android > ติ๊กถูกที่ Is Library > OK


เป็นอันจบขั้นตอนการนำ Tesseract มาทำเป็น Library สำหรับใช้ในการเขียน Application  ของ Android ค่ะ