BAB 3 ANALISIS DAN PERANCANGAN SISTEM
3.5 Analisis Kebutuhan Fungsional
3.5.2 Model Use Case
Use case merupakan pemodelan untuk perilaku (behaviour) sistem aplikasi yang akan dibuat. Use case mendeskripsikan sebuah interaksi antara satu atau lebih aktor dengan sistem aplikasi yang akan dibuat. Use case digunakan untuk mengetahui fungsi apa saja yang ada di dalam sebuah sistem aplikasi dan apa saja yang dapat dilakukan menggunakan fungsi – fungsi itu.
3.5.2.1 Diagram Use Case
Pada sistem aplikasi yang dirancang terdapat use case dan user sebagai aktor tunggal yang berperan dalam sistem.Berikut adalah use case diagram pada sistem aplikasi ini :
Gambar 3.1 Use Case Diagram 3.5.2.2 Definisi Use Case
Tabel 3.4 Definisi Use Case
No Use Case Deskripsi
1 Ambil citra dengan kamera
User mengambil citra teks yang akan dikonversi melalui kamera secara langsung
2 Pilih citra dari galeri User memilih citra teks yang akan dikonversi dari galeri
3 Unduh library bahasa tambahan
User mengunduh pengenal bahasa tambahan (dari Google Code) untuk proses konversi
4 Melakukan pengeditan citra
User melakukan pengeditan citra atau gambar untuk memperbaiki rotasi , merubah citra ke
grayscale dan cropping citra
5 Pilih bahasa yang akan dikonversi
User memilih bahasa yang akan dikenali dan digunakan oleh pada saat proses konversi
6 Perbaikan citra Proses perbaikan citra dilakukan oleh sistem untuk memperbaiki citra agar hasil konversi lebih akurat
7 Pengenalan karakter dengan OCR
Proses pengenalan karakter pada citra atau gambar ke dalam bentuk teks
8 Pengenalan karakter dengan Tesseract
Proses pengenalan karakter pada citra atau gambar dengan karakter latin ataupun non-latin sesuai bahasa yang dipilih
9 Menampilkan hasil konversi citra atau gambar ke teks
Aplikasi menampilkan hasil konversi citra atau gambar ke dalam bentuk teks dan dapat
disimpan dengan format .txt
10 Simpan Data OCR Aplikasi melakukan penyimpanan citra dan hasil OCR ke database setelah konversi
11 Hapus Data OCR
User dapat menghapus data OCR yang tersimpan di database aplikasi
12 Menyimpan hasil konversi
Hasil konversi dapat disimpan dengan format file .txt
13 Melihat Informasi User dapat melihat informasi kontak dan cara penggunaan aplikasi
3.5.2.3 Use Case Skenario
Skenario (flow of event) adalah use case yang menggambarkan urutan interaksi aktor dengan use case tersebut. Berikut ini adalah use case skenario dari
use case utama:
Tabel 3.5 Use Case Skenario Ambil Citra Dengan Kamera Skenario
Nomor 1
Nama Ambil citra dengan kamera
Tujuan Mengambil citra untuk dikonversi
Deskripsi Mengambil citra melalui kamera secara langsung
Skenario Utama
Kondisi Awal User berada di menu utama
Aksi Aktor Reaksi Sistem
1. User menekan tombol kamera
2. Menampilkan kamera utama
3. Mengambil citra 4. Menuju menu edit citra
5. Menampilkan citra yang diambil untuk diolah
Tabel 3.6 Use Case Skenario Pilih Citra Dari Galeri Skenario
Nomor 2
Nama Pilih citra dari galeri
Tujuan Mengambil citra untuk dikonversi Deskripsi Memilih citra dari galeri
Aktor User
Skenario Utama
Kondisi Awal User berada di menu utama
Aksi Aktor Reaksi Sistem
1. User menekan tombol galeri
2. Menampilkan galeri
3. Memilih citra 4. Menuju menu edit citra
5. Menampilkan citra yang diambil untuk diolah
Tabel 3.7 Use Case Skenario Unduh Library Bahasa Tambahan Skenario
Nomor 3
Nama Unduh library bahasa tambahan
Tujuan Mengunduh library bahasa tambahan untuk konversi
Deskripsi Mengunduh library bahasa tambahan untuk konversi dari Google Code
Aktor User
Skenario Utama
Kondisi Awal User berada di menu slide (sliding menu)
Aksi Aktor Reaksi Sistem
1. User memilih menu tambah bahasa
2. Menampilkan pilihan bahasa untuk diunduh
3. Memilih bahasa 4. Mengunduh bahasa yang dipilih 5. Menampilkan proses unduh bahasa
Tabel 3.8 Use Case Skenario Melakukan Pengeditan Citra Skenario
Nomor 4
Nama Melakukan pengeditan citra
Tujuan Mengedit citra untuk dikonversi
Deskripsi Mengedit citra dengan merotasi atau melakukan
cropping pada citra
Aktor User
Skenario Utama
Kondisi Awal User berada di menu edit citra setelah memilih / mengambil citra
Aksi Aktor Reaksi Sistem
1. User masuk menu edit 2. Menampilkan pilihan rotasi, merubah citra ke
grayscale, invert atau cropping
3. User mengedit citra 4. Menampilkan perubahan citra yang diedit
Tabel 3.9 Use Case Skenario Pilih Bahasa Yang Akan Dikonversi Skenario
Nomor 5
Nama Pilih bahasa yang akan dikonversi
Tujuan Memilih bahasa konversi
Deskripsi Memilih bahasa konversi untuk proses pada Tesseract
Aktor User
Skenario Utama
Kondisi Awal User berada di menu mulai konversi
Aksi Aktor Reaksi Sistem
1. User memilih dropdown
menu bahasa OCR
2. Menampilkan pilihan bahasa yang sudah diunduh
3. Memilih bahasa 4. Menandai bahasa yang dipilih
Tabel 3.10 Use Case Skenario Perbaikan Citra Skenario
Nomor 6
Nama Perbaikan Citra
Tujuan Memperbaiki citra untuk menambah akurasi konversi citra ke teks
Deskripsi Memperbaiki citra untuk menambah akurasi konversi citra ke teks dengan OCR
Skenario Utama
Kondisi Awal User berada di menu konversi
Aksi Aktor Reaksi Sistem
1. User memilih tombol mulai konversi
2. Sistem mengubah citra ke dalam bentuk binary (binarize)
3. Sistem merubah threshold pada citra 4. Sistem melakukan perataan pada citra 5. Sistem meneruskan citra hasil edit untuk
diproses dengan OCR
Tabel 3.11 Use Case Skenario Pengenalan Karakter Dengan OCR Skenario
Nomor 7
Nama Pengenalan karakter dengan OCR
Tujuan Mengenali karakter pada citra
Deskripsi Mengenali karakter pada citra dan memprosesnya ke dalam bentuk teks
Aktor User
Skenario Utama
Kondisi Awal User berada di menu edit citra
Aksi Aktor Reaksi Sistem
1. User memilih menu konversi
2. Sistem meratakan citra dan menganalisa baris per baris yang ada pada citra
3. Sistem mengambil dan memisahkan karakter-karakter huruf atau angka yang didapat dari baris yang dianalisis, dimulai dari baris pertama 4. Sistem memetakan simbol-simbol ke dalam data
vektor atau pola yang ada dengan Tesseract 5. Sistem mengkomputasikan output
6. Sistem mengkonversikan output Unicode ke dalam bentuk karakter
7. Sistem melakukan pengecekan simbol setelahnya, apabila etelah itu terdapat simbol maka sistem memetakan kembali simbol ke dalam bentuk vektor, jika tidak, sistem mengecek apakah ada baris setelahnya.
8. Sistem mengecek apakah ada baris setelahnya. Jika ya, maka sistem mengecek kembali dari baris per baris yang ada. Jika tidak maka proses selesai.
Tabel 3.12 Use Case Skenario Pengenalan Karakter Dengan Tesseract Skenario
Nomor 8
Nama Pengenalan karakter dengan Tesseract
Tujuan Mengenali karakter hasil pemetaan oleh OCR sesuai bahasa
Deskripsi Mengenali karakter hasil pemetaan simbol oleh OCR sesuai bahasa konversi yang dipilih
Aktor User
Skenario Utama
Kondisi Awal Sistem berada di proses OCR saat mengambil dan
memisahkan karakter dari baris yang dianalisis
Aksi Aktor Reaksi Sistem
1. Sistem mengambil dan memisahkan karakter-karakter huruf atau angka yang didapat dari baris yang dianalisis OCR
2. Sistem mengklasifikasi setiap karakter, dan memetakan simbol-simbol ke dalam data vektor atau pola yang ada
3. Sistem mencocokkan setiap pola karakter atau simbol dengan data pada library
4. Sistem mengasosiasikan karakter dengan mengklasifikasikan kembali
5. Jika karakter yang dibaca per baris telah habis maka setiap karakter yang terbaca akan diadaptasikan ke dalam bentuk kata
6. Jika karakter belum habis maka sistem akan memproses baris selanjutnya dengan proses yang sama
7. Sistem menuju proses komputasi dengan OCR
Tabel 3.13 Use Case Skenario Menampilkan Hasil Konversi Citra Ke Teks Skenario
Nomor 9
Nama Menampilkan hasil konversi citra ke teks Tujuan Menampilkan hasil konversi citra ke teks Deskripsi Menampilkan hasil konversi citra ke teks dalam
bentuk file .txt
Aktor User
Skenario Utama
Kondisi Awal User berada di tampilan hasil konversi
1. Menampilkan hasil konversi citra ke teks dalam bentuk file .txt yang dapat di copy, di edit dan di simpan
2. Jika file disimpan, menuju menu simpan hasil konversi
3. Jika file tidak disimpan, kembali ke menu utama
Tabel 3.14 Use Case Skenario Simpan Data OCR Skenario
Nomor 10
Nama Simpan Data OCR
Tujuan Menyimpan data hasil OCR
Deskripsi Menyimpan data hasil OCR ke database SQLite
Aktor User
Skenario Utama
Kondisi Awal User berada di menu edit citra
Aksi Aktor Reaksi Sistem
1. User menekan tombol panah (lanjutkan OCR)
2. Menampilkan proses perbaikan citra 3. Menampilkan hasil konversi citra 4. Sistem menyimpan citra ke direktori 5. Sistem menyimpan hasil teks konversi 6. Sistem memberi index pada data
7. Database menyimpan nomor index, alamat path penyimpanan citra dan hasil teks citra
Tabel 3.15 Use Case SkenarioHapus Data OCR Skenario
Nomor 11
Nama Hapus Data OCR
Tujuan Menghapus data OCR
Deskripsi Menghapus data OCR yang tersimpan di database aplikasi
Aktor User
Skenario Utama
Kondisi Awal User berada di menu utama
Aksi Aktor Reaksi Sistem
1. User memilih dan menekan (long click) data OCR yang ada di layar
2. Menampilkan icon untuk menghapus data
3. Menekan tombol hapus 4. Menghapus data yang dipilih dari database 5. Memperbaharui tampilan data pada layar
Tabel 3.16 Use Case SkenarioMenyimpan Hasil Konversi Skenario
Nomor 12
Nama Menyimpan hasil konversi
Tujuan Menyimpan hasil konversi file .txt
Deskripsi Menyimpan hasil konversi citra ke teks dalam bentuk file .txt
Aktor User
Skenario Utama
Kondisi Awal User berada di tampilan hasil konversi
Aksi Aktor Reaksi Sistem
1. User menekan tombol simpan teks
2. Menampilkan pilihan lokasi penyimpanan dan pemberian nama file teks
3. Memilih lokasi dan nama file
4. Menekan tombol simpan 5. Menampilkan notifikasi file tersimpan 6. Kembali ke tampilan hasil konversi
Tabel 3.17 Use Case Skenario Melihat Informasi Skenario
Nomor 13
Nama Melihat informasi
Tujuan Mengetahui cara menggunakan aplikasi
Deskripsi Mengetahui cara menggunakan fitur yang ada pada aplikasi
Aktor User
Skenario Utama
Kondisi Awal User berada di menu slide (sliding menu)
Aksi Aktor Reaksi Sistem
1. User memilih menu informasi
2. Menampilkan informasi kontak dan cara penggunaan aplikasi
3.5.2.4 Activity Diagram
Activity Diagram merupakan gambaran workflow (aliran kerja) atau aktivitas dari sebuah sistem atau proses bisnis. Activity diagram menggambarkan aktivitas sistem, bukan apa yang dilakukan aktor, yaitu aktivitas yang dapat
dilakukan oleh sistem. Activity Diagram untuk masing-masing use case dari aplikasi ini yakni sebagai berikut :
Gambar 3.2 Activity Diagram Ambil Citra Dengan Kamera
Gambar 3.3 Activity Diagram Pilih Citra Dari Galeri
Gambar 3.5 Activity Diagram Melakukan Pengeditan Citra
Gambar 3.7 Activity Diagram Perbaikan Citra
Gambar 3.9 Activity Diagram Pengenalan Karakter Dengan Tesseract
Gambar 3.11 Activity Diagram Simpan Data OCR
Gambar 3.13 Activity Diagram Menyimpan Hasil Konversi
Gambar 3.14 Activity Diagram Melihat Informasi
3.5.2.5 Sequence Diagram
Sequence diagram merupakan diagram yang menggambarkan aktivitas dan relasi kelas pada objek use case dengan mendeskripsikan life cycle objek dan
message yang dikirimkan dan diterima objek. Banyak sequence diagram harus digambarkan sebanyak pendefinisian use case. Sequence Diagram untuk aplikasi ini yakni sebagai berikut :
Gambar 3.15 Sequence Diagram Ambil Citra Dengan Kamera
Gambar 3.17 Sequence Diagram Unduh Library Bahasa Tambahan
Gambar 3.19 Sequence Diagram Pilih Bahasa Yang Akan Dikonversi
Gambar 3.20 Sequence Diagram Perbaikan Citra
Gambar 3.22 Sequence Diagram Pengenalan Karakter Dengan Tesseract
Gambar 3.24 Sequence Diagram Simpan Data OCR
Gambar 3.26 Sequence Diagram Menyimpan Hasil Konversi
Gambar 3.27 Sequence Diagram Melihat Informasi
3.5.2.6 Class Diagram
Class diagram menggambarkan struktur sistem dari segi pendefinisian kelas – kelas yang akan dibuat untuk membangun sistem. Kelas masing-masing memiliki atribut dan metode atau operasi.
a. Atribut merupakan variabel - variabel yang dimiliki oleh suatu kelas. b. Operasi atau metode adalah fungsi-fungsi yang dimiliki oleh suatu kelas Berikut ini merupakan gambar class diagram dari aplikasi ini :
Deskripsi Class Diagram 1. Class Pixa
Tabel 3.18 ClassPixa
Variabel Attribut Tipe Data Visibility
mNativePixa Long final
mWidth Int final
mHeight Int final
mRecycled boolean private
Method Parameter Visibility dan tipe keluaran
createPixa() int size public static Pixa
createPixa() int size, int width, int height
public static Pixa Pixa() long nativePixa, int width,
int height
public Pixa
getNativePixa() public long Pixa
copy() public Pixa
sort() int field, int order public Pixa
size() public int
recycle() public synchronized void
finalize() public void
join() Pixa otherPixa public boolean
add() Pix pix, Box box, int mode public void
getPix() int index public Pix
getWidth() public int
getHeight() public int
getRect() public Rect
getBoxGeometry() int index public int[]
getBoxGeometry() int index, int[] dimensions public boolean
getBoxRects() public ArrayList<Rect>
nativeCreate() int size private static native int nativeCopy() long nativePixa private static native int nativeSort() long nativePixa, int field,
int order
private static native int nativeJoin() long nativePixa, long
otherPixa
private static native boolean nativeGetCount() long nativePixa private static native int nativeDestroy() long nativePixa private static native void nativeAdd() long nativePixa, long
nativePix, long nativeBox, int mode
private static native void
nativeWriteToFileRandomCmap() long nativePixa, String fileName, int width, int height
private static native boolean
nativeReplacePix() long nativePixa, int index, long nativePix, long nativeBox
private static native void
nativeMergeAndReplacePix() long nativePixa, int indexA, int indexB
private static native void
2. Class PixIterator
Tabel 3.19 ClassPixIterator
Variabel Attribut Tipe Data Visibility
mIndex Int private
Method Parameter Visibility dan tipe keluaran
PixIterator() private
hasNext() public boolean
next() public Pix
remove() public void
3. Class Pix
Tabel 3.20 ClassPix
Variabel Attribut Tipe Data Visibility
INDEX_W Int public static final
INDEX_H Int public static final
mNativePix long final
mRecycled boolean private
Method Parameter Visibility dan tipe keluaran
Pix() long nativePix public
Pix() int width, int height, int depth public
getNativePix() public long
getData() public byte[]
getDimensions() public int[]
getDimensions() int[] dimensions public boolean
clone() public Pix
copy() public Pix
invert() public boolean
recycle() public void
getRect() public Rect
getWidth() public int
getDepth() public int
nativeGetRefCount() long nativePix private static native int
4. Class Box
Tabel 3.21 ClassBox
Variabel Attribut Tipe Data Visibility
INDEX_X int public static final
INDEX_Y int public static final
INDEX_W int public static final
INDEX_H int public static final
mNativeBox long final
mRecycled boolean private
Method Parameter Visibility dan tipe keluaran
Box() long mNativeBox public
getCenter() public Point
getX() public int
getY() public int
getWidth() public int
getHeight() public int
getGeometry() public int[]
getGeometry() int[] geometry public boolean
recycle() public void
getNativeBox() public long
nativeCreate() private static native long
nativeGetX() private static native int
nativeGetY() private static native int
nativeGetWidth() private static native int
nativeGetHeight () private static native int
nativeGetGeometry() private static native boolean
5. Class ReadFile
Tabel 3.22 Class ReadFile
Variabel Attribut Tipe Data Visibility
Log_Tag String private static final
Method Parameter Visibility dan tipe keluaran
readFile() File file public static Pix
readFile() Context context, File file public static Pix loadWithPicasso() Context context, File file public static Pix loadWithPicasso() Context context, Uri uri public static Pix
readBitmap() Bitmap bmp public static Pix
nativeReadMem() byte[] data, int size private static native long nativeReadBytes8() byte[] data, int w, int h private static native long nativeReplaceBytes8() long nativePix, byte[] data, int w,
int h
private static native boolean nativeReadFiles() String dirname, String prefix private static native long nativeReadFile() String filename private static native long nativeReadBitmap() Bitmap bitmap private static native long
6. Class WriteFile
Tabel 3.23 Class WriteFile
Variabel Attribut Tipe Data Visibility
DEFAULT_QUALITY int public static final
DEFAULT_PROGRESSIVE boolean public static final
Method Parameter Visibility dan tipe keluaran
writeBytes8() Pix pixs, byte[] data public static int
writeImpliedFormat() Pix pixs, File file, int quality, boolean progressive
public static boolean
writeBitmap() Pix pixs public static Bitmap
nativeWriteBytes8() long nativePix, byte[] data private static native int nativeWriteFiles() long nativePix, String rootname,
int format
private static native boolean nativeWriteMem() long nativePix, int format private static native byte[] nativeWriteImpliedFormat() long nativePix, String fileName,
int quality, boolean progressive
private static native boolean nativeWriteBitmap() long nativePix, Bitmap bitmap private static native boolean
7. Class Projective
Tabel 3.24 ClassProjective
Method Parameter Visibility dan tipe keluaran
projectiveTransform() Pix pixs, float[] dest, float[] src public static Pix
nativeProjectivePtaColor() long pix , float[] dest, float[] src private static native long
8. Class Rotate
Tabel 3.25 Class Rotate
Method Parameter Visibility dan tipe keluaran
rotate() Pix pixs, float degrees public static Pix rotate() Pix pixs, float degrees, boolean quality public static Pix rotate() Pix pixs, float degrees, boolean
quality, boolean resize
public static Pix rotateOrth() Pix pixs, int quads public static Pix nativeRotateOrth() long nativePix, int quads private static native int nativeRotate() long nativePix, float degrees, boolean
quality, boolean resize
private static native long
9. Class OCR
Tabel 3.26 Class OCR
Variabel Attribut Tipe Data Visibility
Tag String public static final
Message_Preview_Image int public static final
Message_End int public static final
Message_Error int public static final
Message_Tesseract_Progress int public static final Message_Final_Image int public static final
Message_Utf8_Text int public static final
Message_Hocr_Text int public static final
Message_Layout_Elements int public static final Message_Layout_Pix int public static final Message_Explanation_Text int public static final
Extra_Word_Box String public static final
Extra_Ocr_Box String public static final
mPreviewWith int public
mPreviewHeight int public
mOriginalWidth int public
mOriginalHeight int public
mWordBoundingBox RectF public
mMessenger Messenger public
mIsActivityAttached boolean public
mTess TessBaseAPI public
mStopped boolean public
mPWidth int private
mPHeight int private
Original_Pix_Name String public final static
Method Parameter Visibility dan tipe keluaran
OCR() final MonitoredActivity
activity, final Messenger messenger
public
onProgressImage() final long nativePix public synchronized void onProgressValues() final int percent, final int
left, final int right, final int top, final int bottom, final int left2, final int right2, final int top2, final int bottom2
public void
onProgressText() int id public void
onLayoutPix() long nativePix public void onHOCRResult() String hocr, int accuracy public void onUTF8Result() String utf8Text public void onLayoutElements() int nativePixaText, int
nativePixaImages
public void
onActivityDestroyed() MonitoredActivity activity public synchronized void onActivityResumed() MonitoredActivity activity public synchronized void mulaiOCRUtkComplexLayou
ts()
final Context context, final String lang, final Pixa pixaText, final Pixa pixaImages, final int[] selectedTexts, final int[] selectedImages
public void
initTessApi() String tessDir, String lang public boolean mulaiAnalisisLayout() final Context context, final
Pix pixs
public void mulaiOCRUtkSimpleLayout(
)
final Context context, final String lang, final Pix pixs
public void doInBackground() Void... params public File simpanPixKeCacheDir() Context context, Pix pix public static void getLastOriginalImageFromCa
che()
Context context public static File
cancel() public synchronized void
nativeInit() public static native void
nativeOCRBook() long nativePix public native long combineSelectedPixa() long nativePixaTexts, long
nativePixaImages, int[] selectedTexts, int[] selectedImages
public native long[]
nativeAnalyseLayout() long nativePix public native long
Tabel 3.27 Class simpanPixTask
Variabel Attribut Tipe Data Visibility
mPix Pix public final
mDir File public final
Method Parameter Visibility dan tipe keluaran
simpanPixTask() Pix pix, File dir public
11. Class Blur
Tabel 3.28 Class Blur
Method Parameter Visibility dan tipe keluaran BlurDetectionResult blurDetect() Pix pixs public static
nativeBlurDetect() long pix public static native BlurDetectionResult
12. Class BlurDetectionResult
Tabel 3.29 Class BlurDetectionResult
Variabel Attribut Tipe Data Visibility
mPixBlur Pix public final
mBlurValue; double public final
mMostBlurredRegion Box public final
Method Parameter Visibility dan tipe keluaran
BlurDetectionResult() long blurPixPointer, double mBlurValue, long blurRegionPointer
public
getPixBlur() public Pix
getBlurValue() public double
getBlurriness() public Blurriness
getMostBlurredRegion() public Box
13. Class AlertCitraBlur
Tabel 3.30 Class AlertCitraBlur
Variabel Attribut Tipe Data Visibility
TAG String public static final
Extra_Blurrines String public final static
Method Parameter Visibility dan tipe keluaran
onClick() DialogInterface dialog, int which public void onCancel() DialogInterface dialog public void
newInstance() float blurrines public static AlertCitraBlur onCreateDialog() Bundle savedInstanceState public Dialog
Tabel 3.31 Class Interface BlurDialogClickListener
Method Parameter Visibility dan tipe keluaran
pilihLanjutkan() void
pilihBuatCitraBaru() void
15. Class CitraScaler
Tabel 3.32 Class CitraScaler
Method Parameter Visibility dan tipe keluaran
getScaleFactorUtkLayar() Pix mPix, int vwidth, int vheight
public float HasilScale scale() Pix pix, final int w, final int
h
public
16. Class HasilScale
Tabel 3.33 Class HasilScale
Variabel Attribut Tipe Data Visibility
mPix Pix public final
mScaleFactor float public final