Dalam posting blog ini, kami akan mencoba menjelaskan teknologi di balik Tesseract Engine yang paling banyak digunakan, yang ditingkatkan dengan pengetahuan terbaru yang diteliti dalam pengenalan karakter optik. Artikel ini juga akan berfungsi sebagai panduan / tutorial bagaimana menerapkan OCR di python menggunakan mesin Tesseract. Kami akan membahas modul-modul berikut:
- Fitur Tesseract OCR
- Pemrosesan awal untuk OCR menggunakan OpenCV
- Menjalankan Tesseract dengan CLI dan Python
- Keterbatasan mesin Tesseract
Daftar Isi
- Pengantar
- Alat OCR Sumber Terbuka
- Tesseract OCR
- OCR dengan Pytesseract dan OpenCV
- Melatih Tesseract pada data khusus
- Batasan Tesseract
- OCR dengan Nanonets
- Kesimpulan
Pengantar
OCR = Character Recognition optik. Dengan kata lain, sistem OCR mengubah gambar teks dua dimensi, yang dapat berisi teks yang dicetak mesin atau teks tulisan tangan dari representasi gambarnya menjadi teks yang dapat dibaca mesin. OCR sebagai sebuah proses umumnya terdiri dari beberapa sub-proses untuk tampil seakurat mungkin. Subprosesnya adalah:
- Pemrosesan awal Gambar
- Pelokalan Teks
- Segmentasi Karakter
- Pengakuan Karakter
- Pengolahan pasca
Sub-proses dalam daftar di atas tentu saja dapat berbeda, tetapi ini kira-kira merupakan langkah-langkah yang diperlukan untuk mendekati pengenalan karakter otomatis. Dalam perangkat lunak OCR, tujuan utamanya adalah mengidentifikasi dan menangkap semua kata unik menggunakan bahasa yang berbeda dari karakter teks tertulis.
Selama hampir dua dekade, sistem pengenalan karakter optik telah banyak digunakan untuk menyediakan entri teks otomatis ke dalam sistem komputerisasi. Padahal selama ini sistem OCR konvensional (seperti zona OCR) tidak pernah mengatasi ketidakmampuan mereka untuk membaca lebih dari segelintir jenis font dan format halaman. Jenis spasi proporsional (yang mencakup hampir semua salinan mengeset), font printer laser, dan bahkan banyak font mesin tik non-proporsional, tetap berada di luar jangkauan sistem ini. Dan sebagai hasilnya, OCR konvensional tidak pernah mencapai lebih dari dampak marginal pada jumlah total dokumen yang membutuhkan konversi ke dalam bentuk digital.
Mesin OCR generasi berikutnya menangani masalah-masalah yang disebutkan di atas dengan sangat baik dengan memanfaatkan penelitian terbaru di bidang pembelajaran yang mendalam. Dengan memanfaatkan kombinasi model dalam dan kumpulan data besar yang tersedia untuk umum, model mencapai akurasi mutakhir pada tugas-tugas tertentu. Saat ini juga memungkinkan untuk menghasilkan data sintetis dengan font yang berbeda menggunakan jaringan adversarial generatif dan beberapa pendekatan generatif lainnya.
Pengenalan Karakter Optik tetap a masalah yang menantang ketika teks muncul di lingkungan yang tidak dibatasi, seperti pemandangan alam, karena distorsi geometris, latar belakang yang rumit, dan font yang beragam. Teknologi ini masih memiliki potensi besar karena berbagai kasus penggunaan OCR berbasis pembelajaran mendalam seperti
Memiliki masalah OCR dalam pikiran? Ingin mengurangi biaya entri data organisasi Anda? Pergi ke Nanonet dan membangun model OCR untuk ekstrak teks dari gambar or mengekstrak data dari PDF dengan berbasis AI OCR PDF!
Alat OCR Sumber Terbuka
Ada banyak optical character recognition perangkat lunak tersedia. Saya tidak menemukan perbandingan kualitas di antara mereka, tetapi saya akan menulis tentang beberapa di antaranya yang tampaknya paling ramah pengembang.
tesseract - mesin OCR sumber terbuka yang telah mendapatkan popularitas di kalangan pengembang OCR. Meskipun terkadang sulit untuk diterapkan dan dimodifikasi, tidak ada terlalu banyak alternatif OCR yang gratis dan kuat di pasaran untuk waktu yang lama. Tesseract dimulai sebagai Ph.D. proyek penelitian di HP Labs, Bristol. Itu mendapatkan popularitas dan dikembangkan oleh HP antara 1984 dan 1994. Pada tahun 2005 HP merilis Tesseract sebagai perangkat lunak sumber terbuka. Sejak 2006 dikembangkan oleh Google.
ocropus - OCRopus adalah sistem OCR sumber terbuka yang memungkinkan evaluasi dan penggunaan kembali komponen OCR dengan mudah oleh peneliti dan perusahaan. Kumpulan program analisis dokumen, bukan sistem OCR turn-key. Untuk menerapkannya ke dokumen Anda, Anda mungkin perlu melakukan beberapa pemrosesan gambar sebelumnya, dan mungkin juga melatih model baru. Selain skrip pengenalan itu sendiri, ada beberapa skrip untuk pengeditan dan koreksi kebenaran dasar, mengukur tingkat kesalahan, menentukan matriks kebingungan yang mudah digunakan dan diedit.
Mata - Ocular bekerja paling baik pada dokumen yang dicetak menggunakan hand press, termasuk yang ditulis dalam berbagai bahasa. Ini beroperasi menggunakan baris perintah. Ini adalah sistem OCR bersejarah yang canggih. Fitur utamanya adalah:
- Pembelajaran font yang tidak dikenal tanpa pengawasan: hanya membutuhkan gambar dokumen dan korpus teks.
- Kemampuan untuk menangani dokumen yang berisik: tinta yang tidak konsisten, spasi, perataan vertikal
- Dukungan untuk dokumen multibahasa, termasuk dokumen yang memiliki banyak peralihan kode tingkat kata.
- Pembelajaran pola variasi ortografi tanpa pengawasan termasuk ejaan kuno dan cara cepat printer.
- Secara bersamaan, transkripsi bersama menjadi bentuk diplomatik (literal) dan normal.
SwiftOCR - Saya juga akan menyebutkan mesin OCR yang ditulis dalam Swift karena ada pengembangan besar yang dilakukan untuk memajukan penggunaan Swift sebagai bahasa pemrograman pengembangan yang digunakan untuk pembelajaran mendalam. Periksa blog untuk mengetahui lebih lanjut mengapa. SwiftOCR adalah pustaka OCR yang cepat dan sederhana yang menggunakan jaringan saraf untuk pengenalan gambar. SwiftOCR mengklaim bahwa mesin mereka mengungguli pustaka Tessaract yang terkenal.
Di posting blog ini, kami akan menempatkan fokus pada Tesseract OCR dan cari tahu lebih lanjut tentang cara kerjanya dan cara penggunaannya.
Tesseract OCR
Tesseract adalah mesin pengenalan teks sumber terbuka (OCR), tersedia di bawah lisensi Apache 2.0. Ini dapat digunakan secara langsung, atau (untuk pemrogram) menggunakan API untuk mengekstrak teks yang dicetak dari gambar. Ini mendukung berbagai bahasa. Tesseract tidak memiliki GUI bawaan, tetapi ada beberapa yang tersedia dari Halaman 3rdParty. Tesseract kompatibel dengan banyak bahasa pemrograman dan kerangka kerja melalui pembungkus yang dapat ditemukan di sini. Ini dapat digunakan dengan analisis tata letak yang ada untuk mengenali teks dalam dokumen besar, atau dapat digunakan bersama dengan detektor teks eksternal untuk mengenali teks dari gambar baris teks tunggal.
Tesseract 4.00 menyertakan subsistem jaringan saraf baru yang dikonfigurasi sebagai pengenal baris teks. Itu berasal dari LSTM berbasis Python OCRopus implementasi tetapi telah didesain ulang untuk Tesseract di C ++. Sistem jaringan neural di Tesseract mendahului TensorFlow tetapi kompatibel dengannya, karena ada bahasa deskripsi jaringan yang disebut Variable Graph Specification Language (VGSL), yang juga tersedia untuk TensorFlow.
Untuk mengenali gambar yang berisi satu karakter, kami biasanya menggunakan Convolutional Neural Network (CNN). Teks dengan panjang sembarang adalah urutan karakter, dan masalah seperti itu diselesaikan menggunakan RNN dan LSTM adalah bentuk RNN โโyang populer. Baca posting ini untuk mempelajari lebih lanjut LSTM.
Teknologi - Cara kerjanya
LSTM sangat bagus dalam mempelajari urutan tetapi sangat melambat ketika jumlah status terlalu besar. Ada hasil empiris yang menyarankan bahwa lebih baik meminta LSTM untuk mempelajari urutan panjang daripada urutan pendek di banyak kelas. Tesseract dikembangkan dari model OCRopus dengan Python yang merupakan cabang dari LSMT di C ++, yang disebut CLSTM. CLSTM adalah implementasi model jaringan saraf berulang LSTM di C ++, menggunakan pustaka Eigen untuk komputasi numerik.
Legacy Tesseract 3.x bergantung pada proses multi-tahap di mana kami dapat membedakan langkah-langkah:
- Pencarian kata
- Pencarian garis
- Klasifikasi karakter
Pencarian kata dilakukan dengan mengatur baris teks menjadi blob, dan garis serta daerah dianalisis untuk nada tetap atau teks proporsional. Baris teks dipecah menjadi kata-kata yang berbeda sesuai dengan jenis spasi karakter. Pengakuan kemudian berlanjut sebagai proses dua langkah. Pada operan pertama, dilakukan upaya untuk mengenali setiap kata secara bergantian. Setiap kata yang memuaskan diteruskan ke pengklasifikasi adaptif sebagai data pelatihan. Pengklasifikasi adaptif kemudian mendapat kesempatan untuk lebih akurat mengenali teks di bagian bawah halaman.
Modernisasi alat Tesseract merupakan upaya pembersihan kode dan penambahan model LSTM baru. Citra masukan diproses dalam kotak (persegi panjang) baris demi baris yang diumpankan ke dalam model LSTM dan memberikan keluaran. Pada gambar di bawah ini kita dapat memvisualisasikan cara kerjanya.
Setelah menambahkan alat pelatihan baru dan melatih model dengan banyak data dan font, Tesseract mencapai kinerja yang lebih baik. Tetap saja, tidak cukup baik untuk mengerjakan teks tulisan tangan dan font aneh. Dimungkinkan untuk menyempurnakan atau melatih kembali lapisan atas untuk eksperimen.
Menginstal Tesseract
Menginstal tesseract di Windows mudah dengan binari yang telah dikompilasi sebelumnya ditemukan di sini. Jangan lupa untuk mengedit variabel lingkungan "jalur" dan menambahkan jalur tesseract. Untuk instalasi Linux atau Mac itu diinstal dengan beberapa perintah.
Setelah instalasi, verifikasi bahwa semuanya berfungsi dengan mengetikkan perintah di terminal atau cmd:
$ tesseract --version
Dan Anda akan melihat hasilnya seperti:
tesseract 4.0.0
leptonica-1.76.0
libjpeg 9c : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.8
Found AVX2
Found AVX
Found SSE
Anda dapat menginstal pembungkus python untuk tesseract setelah ini menggunakan pip.
$ pip install pytesseract
Perpustakaan Tesseract dikirimkan dengan alat baris perintah praktis yang disebut tesseract. Kita dapat menggunakan alat ini untuk melakukan OCR pada gambar dan hasilnya disimpan dalam file teks. Jika kami ingin mengintegrasikan Tesseract dalam kode C ++ atau Python kami, kami akan menggunakan API Tesseract.
Menjalankan Tesseract dengan CLI
Panggil mesin Tesseract pada gambar dengan jalur_gambar dan ubah gambar menjadi teks, tulis baris demi baris di command prompt dengan mengetik berikut ini:
$ tesseract image_path stdout
Untuk menulis teks keluaran dalam sebuah file:
$ tesseract image_path text_result.txt
Untuk menentukan nama model bahasa, tulis shortcut bahasa setelahnya -l bendera, secara default dibutuhkan bahasa Inggris:
$ tesseract image_path text_result.txt -l eng
Secara default, Tesseract mengharapkan halaman teks saat menyegmentasikan gambar. Jika Anda hanya ingin OCR wilayah kecil, coba mode segmentasi yang berbeda, menggunakan โPsm argumen. Ada 14 mode yang tersedia yang dapat ditemukan di sini. Secara default, Tesseract sepenuhnya mengotomatiskan segmentasi halaman tetapi tidak melakukan orientasi dan deteksi skrip. Untuk menentukan parameter, ketikkan yang berikut ini:
$ tesseract image_path text_result.txt -l eng --psm 6
Ada juga satu argumen penting lagi, mode mesin OCR (oem). Tesseract 4 memiliki dua mesin OCR - mesin Tesseract Legacy dan mesin LSTM. Ada empat mode operasi yang dipilih dengan menggunakan opsi โoem.
0 Mesin lama saja.
1 Jaringan saraf mesin LSTM saja.
2 mesin Legacy + LSTM.
3 Default, berdasarkan apa yang tersedia.
OCR dengan Pytesseract dan OpenCV
Pytesseract adalah pembungkus untuk Tesseract-OCR Engine. Ini juga berguna sebagai skrip permintaan yang berdiri sendiri untuk tesseract, karena dapat membaca semua jenis gambar yang didukung oleh pustaka pencitraan Pillow dan Leptonica, termasuk jpeg, png, gif, bmp, tiff, dan lainnya. Info lebih lanjut tentang pendekatan Python baca di sini. Kode untuk tutorial ini dapat ditemukan di sini gudang.
import cv2 import pytesseract img = cv2.imread('image.jpg') # Adding custom options
custom_config = r'--oem 3 --psm 6'
pytesseract.image_to_string(img, config=custom_config)
Pemrosesan awal untuk Tesseract
Untuk menghindari semua penurunan akurasi keluaran Tesseract, Anda perlu memastikan gambarnya tepat diproses sebelumnya.
Ini termasuk penskalaan ulang, binarisasi, penghapusan derau, deskewing, dll.
Untuk memproses gambar terlebih dahulu untuk OCR, gunakan salah satu fungsi python berikut atau ikuti Dokumentasi OpenCV.
import cv2
import numpy as np img = cv2.imread('image.jpg') # get grayscale image
def get_grayscale(image): return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # noise removal
def remove_noise(image): return cv2.medianBlur(image,5) #thresholding
def thresholding(image): return cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1] #dilation
def dilate(image): kernel = np.ones((5,5),np.uint8) return cv2.dilate(image, kernel, iterations = 1) #erosion
def erode(image): kernel = np.ones((5,5),np.uint8) return cv2.erode(image, kernel, iterations = 1) #opening - erosion followed by dilation
def opening(image): kernel = np.ones((5,5),np.uint8) return cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel) #canny edge detection
def canny(image): return cv2.Canny(image, 100, 200) #skew correction
def deskew(image): coords = np.column_stack(np.where(image > 0)) angle = cv2.minAreaRect(coords)[-1] if angle < -45: angle = -(90 + angle) else: angle = -angle (h, w) = image.shape[:2] center = (w // 2, h // 2) M = cv2.getRotationMatrix2D(center, angle, 1.0) rotated = cv2.warpAffine(image, M, (w, h), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE) return rotated #template matching
def match_template(image, template): return cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
Mari kita bekerja dengan sebuah contoh untuk melihat segala sesuatunya dengan lebih baik. Seperti inilah gambar asli kami โ
Setelah preprocessing dengan kode berikut
image = cv2.imread('aurebesh.jpg') gray = get_grayscale(image)
thresh = thresholding(gray)
opening = opening(gray)
canny = canny(gray)
dan memplot gambar yang dihasilkan, kami mendapatkan hasil sebagai berikut.
Output untuk gambar asli terlihat seperti ini -
GALACTIC BASIC
(AUREBESH) RE HFVMEVEIiZwoyv Ze
ABC DE F GH I JK LM
Nโ0- PQ RST Uv WX
2 | Ff 8 G& Pf fF ยง 5 op 7
ee
5, jf FF Ty ee ee
=
334 477 OED
Inilah tampilan output untuk berbagai gambar yang telah diproses sebelumnya โ
Gambar tepi Canny (tidak begitu bagus) -
CAE Cn Cae AS
(AUREBESE) EA Na
oe SS
(Ne CI (ENE
a, ee oe ea
2
a a A: rc
|, |
a
Sear eo/e ecm emclomt Cia cuoomct mi im
Gambar dengan ambang batas -
GALACTIC BASIC
(AVREBESH)
RS 7FVMeEVEi1iFf oยฃ
A B C D EF GH IJ K LM
AOoder7Nnvroroava
N O P Q@R S$ TU VW XK Yยฅ Z
7 ee For 8 Ro Pf F Boao om #
0 12 3 4 5 6 7 8 9 , . !
>ยป 1kr7 @ by FEN
2? S$ ( Por Foy of ee
ASGSANDIE
CH AE EO KH NG OO SH TH
Gambar pembuka -
GALACTIC BASIC
(AUREZEBELSH)
KEE VTMEUOU EB iw oN es
A BC D EF F @ H | J K LT Ww
AOGdrcrT7WTt HYOAVa4
WO P Q R BS T U VW WK y Z
i J
Oo 1 2 3 46 8 7 SC Ps,
VY ir- -rp,ptUuY?
a a a
AGoOAnNnoOID
CH AE BO KH ยฎ@ OO SH TH
Mengumpulkan kotak di sekitar teks
Dengan menggunakan Pytesseract, Anda bisa mendapatkan informasi kotak pembatas untuk hasil OCR Anda menggunakan yang berikut ini kode.
Skrip di bawah ini akan memberi Anda informasi kotak pembatas untuk setiap karakter yang terdeteksi oleh tesseract selama OCR.
import cv2
import pytesseract img = cv2.imread('image.jpg') h, w, c = img.shape
boxes = pytesseract.image_to_boxes(img) for b in boxes.splitlines(): b = b.split(' ') img = cv2.rectangle(img, (int(b[1]), h - int(b[2])), (int(b[3]), h - int(b[4])), (0, 255, 0), 2) cv2.imshow('img', img)
cv2.waitKey(0)
Jika Anda ingin kotak di sekitar kata, bukan karakter, fungsinya image_to_data
akan berguna. Anda bisa menggunakan image_to_data
fungsi dengan tipe keluaran yang ditentukan dengan pytesseract Output
.
Pikirkan masalah OCR? Ingin mendigitalkan faktur, PDF, atau plat nomor? Kepala ke Nanonet dan bangun model OCR gratis!
Kami akan menggunakan contoh gambar faktur di atas untuk menguji keluaran tesseract kami.
import cv2
import pytesseract
from pytesseract import Output img = cv2.imread('invoice-sample.jpg') d = pytesseract.image_to_data(img, output_type=Output.DICT)
print(d.keys())
Ini akan memberi Anda keluaran berikut -
dict_keys(['level', 'page_num', 'block_num', 'par_num', 'line_num', 'word_num', 'left', 'top', 'width', 'height', 'conf', 'text'])
Dengan kamus ini, kita dapat mendeteksi setiap kata, informasi kotak pembatasnya, teks di dalamnya, dan skor keyakinan untuk masing-masing kata.
Anda dapat memplot kotak dengan menggunakan kode di bawah ini -
n_boxes = len(d['text'])
for i in range(n_boxes): if int(d['conf'][i]) > 60: (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.imshow('img', img)
cv2.waitKey(0)
Inilah yang akan terlihat seperti gambar contoh faktur.
Pencocokan template teks
Ambil contoh mencoba menemukan di mana tanggal dalam gambar. Di sini template kami akan menjadi pola ekspresi reguler yang akan kami cocokkan dengan hasil OCR kami untuk menemukan kotak pembatas yang sesuai. Kami akan menggunakan regex
modul dan image_to_data
berfungsi untuk ini.
import re
import cv2
import pytesseract
from pytesseract import Output img = cv2.imread('invoice-sample.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
keys = list(d.keys()) date_pattern = '^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(19|20)dd$' n_boxes = len(d['text'])
for i in range(n_boxes): if int(d['conf'][i]) > 60: if re.match(date_pattern, d['text'][i]): (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.imshow('img', img)
cv2.waitKey(0)
Seperti yang diharapkan, kami mendapatkan satu kotak di sekitar tanggal faktur pada gambar.
Mode segmentasi halaman
Ada beberapa cara menganalisis halaman teks. Api tesseract menyediakan beberapa mode segmentasi halaman jika Anda ingin menjalankan OCR hanya pada wilayah kecil atau dalam orientasi berbeda, dll.
Berikut daftar mode segmentasi halaman yang didukung oleh tesseract โ
0 Orientasi dan deteksi skrip (OSD) saja.
1 Segmentasi halaman otomatis dengan OSD.
2 Segmentasi halaman otomatis, tetapi tidak ada OSD, atau OCR.
3 Segmentasi halaman sepenuhnya otomatis, tetapi tidak ada OSD. (Default)
4 Asumsikan satu kolom teks dengan ukuran variabel.
5 Asumsikan satu blok seragam teks vertikal rata.
6 Asumsikan satu blok teks seragam.
7 Perlakukan gambar sebagai satu baris teks.
8 Perlakukan gambar sebagai satu kata.
9 Perlakukan gambar sebagai satu kata dalam lingkaran.
10 Perlakukan gambar sebagai satu karakter.
11 Teks renggang. Temukan teks sebanyak mungkin tanpa urutan tertentu.
12 Teks renggang dengan OSD.
13 Garis mentah. Perlakukan gambar sebagai satu baris teks, melewati peretasan yang khusus untuk Tesseract.
Untuk mengubah mode segmentasi halaman Anda, ubah --psm
argumen dalam string konfigurasi kustom Anda ke salah satu kode mode yang disebutkan di atas.
Deteksi orientasi dan skrip
Anda dapat mendeteksi orientasi teks pada gambar Anda dan juga skrip tempat teks itu ditulis. Gambar berikut -
setelah menjalankan kode berikut -
osd = pytesseract.image_to_osd(img)
angle = re.search('(?<=Rotate: )d+', osd).group(0)
script = re.search('(?<=Script: )d+', osd).group(0)
print("angle: ", angle)
print("script: ", script)
akan mencetak keluaran berikut.
angle: 90
script: Latin
Deteksi hanya angka
Ambil gambar ini misalnya -
Teks yang diekstrak dari gambar ini terlihat seperti ini.
โCustomer name Hallium Energy services
Project NEHINS-HIB-HSA
lavoice no 43876324
Dated 17%h Nov2018
Pono 76496234
Anda hanya dapat mengenali angka dengan mengubah konfigurasinya menjadi berikut
custom_config = r'--oem 3 --psm 6 outputbase digits'
print(pytesseract.image_to_string(img, config=custom_config))
Outputnya akan terlihat seperti ini.
-- . 43876324
172018
0 76496234
Karakter daftar putih
Katakanlah Anda hanya ingin mendeteksi karakter tertentu dari gambar yang diberikan dan mengabaikan sisanya. Anda dapat menentukan daftar putih karakter Anda (di sini, kami telah menggunakan semua karakter huruf kecil dari a sampai z saja) dengan menggunakan konfigurasi berikut.
custom_config = r'-c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz --psm 6'
print(pytesseract.image_to_string(img, config=custom_config))
Keluaran -
customername
roject
tnvoleeno
ated alliumenergyservices
e
thovo
Karakter yang masuk daftar hitam
Jika Anda yakin beberapa karakter atau ekspresi pasti tidak akan muncul dalam teks Anda (OCR akan mengembalikan teks yang salah sebagai pengganti karakter yang masuk daftar hitam), Anda dapat memasukkan karakter tersebut ke daftar hitam dengan menggunakan konfigurasi berikut.
custom_config = r'-c tessedit_char_blacklist=0123456789 --psm 6'
pytesseract.image_to_string(img, config=custom_config)
Keluaran -
Customer name Hallium Energy services
Project NEHINS-HIB-HSA
lavoice no
Dated %h Nov%
Pono
Deteksi dalam berbagai bahasa
Anda dapat memeriksa bahasa yang tersedia dengan mengetik ini di terminal
$ tesseract --list-langs
Untuk mengunduh tesseract untuk penggunaan bahasa tertentu
$ sudo apt-get install tesseract-ocr-LANG
di mana LANG adalah kode tiga huruf untuk bahasa yang Anda butuhkan. Anda dapat mengetahui nilai LANG di sini.
Anda dapat mendownload .traindata
file untuk bahasa yang Anda butuhkan di sini dan letakkan di $TESSDATA_PREFIX
direktori (ini harus sama dengan tempat file tessdata
direktori diinstal) dan itu harus siap digunakan.
Note - Hanya bahasa yang memiliki a .traineddata
format file didukung oleh tesseract.
Untuk menentukan bahasa yang Anda perlukan untuk keluaran OCR Anda, gunakan -l LANG
argumen dalam konfigurasi di mana LANG adalah kode 3 huruf untuk bahasa apa yang ingin Anda gunakan.
custom_config = r'-l eng --psm 6'
pytesseract.image_to_string(img, config=custom_config)
Ambil gambar ini misalnya -
Anda dapat bekerja dengan banyak bahasa dengan mengubah parameter LANG seperti -
custom_config = r'-l grc+tha+eng --psm 6'
pytesseract.image_to_string(img, config=custom_config)
dan Anda akan mendapatkan hasil berikut -
Hereโs some Greek: ฮฮดฮนฮฟ ฮดฮนฯฯฮฑ ฮนฮผฯฮตฮดฮนฯ ฯฮนฮผ ฮตฮน, ฮฑฮด ฯฮตฮป ฮฑฮฒฯฮฟฯฯฮตฮฑฮฝฮธ ฮตฮปฯฮบฯ
ฮตฮฝฮธฮนฮฑฮผ, ฮตฮพ ฮตฯฮต ฮตฮพฮตฯฯฮน ฮณฯ
-
ฮฒฮตฯฮณฯฮตฮฝ ฮทฮฑฯ. ฮฯ ฮผฮตฮน ฯฮฟฮปฮตฯ ฯฯฮนฯฯฮฟฯฮตฮผ. แผดฯ
ฯ ฮฑฮปฮนฮฑ ฮปฮฑฮฒฯฯฮต ฮธฮต. ฮฃฮนฮธ ฮบฯ
ฯฯ ฮฝฯ
ฯฮบฯ
ฮฑฮผ
ฯฯฮฑฯฯ
ฮฝฮดฮนฮฑ ฮฑฮฝ, แฝ ฮผฮฝฮนฯ
ฮผ ฮตฮปฮนฮณฮตฮฝฮดฮน ฯฮนฮฝ ฯฯฮน. ฮ ฮฑฯฯฮตฮผ ฯฮตฯฮธฮตฯฮตฮผ ฯฯ
ฯฮนฯฮนฮฑฮฝฯแฝบฯ
ฯ ฮตฮพ ฮนฯ
ฯ,ฮฝฮฑฮผ
%0790 เน เธฃ เนเธ เน เน 80 เน 6 เน เธญ 06 เธช 0 เนเธ เธ เธญ เน , ฯฯฯ ฯฯฯฯฯฮนฮฑฮต ฯฮฑฮตฯฮฟฮปฮฑ ฮนฮด. ฮฯ ฯฯฮน ฮดฮฟฮปฮฟฯ ฮฝฯ
-
ฯฮบฯ
ฮฑฮผ. 6 Thai Hereโs some Thai: ฮฝแพฟ เธ เธญ เธฃ เธฑ เธ เธเธฑ เธ เธ เธธ เน เธข เนเธ เธฃ เธ เธด เธง เนเธ เธญ เธฃ เน เธช เธเธฒ เธ เธฑ เธ เธข เน เธ เน เธฒ เธ เนเธ เน เธ เธ เน เธญ เธ เธก เน เธฒ เธซ เธด เธ เธญ เน เธญ เธ เธเธฒ เธ เธธ เธฃ เธฐ เธ เธฑ เธ เธ เธ เธธ เธฃ เธฐ เธเธด เธ เธช เธ เธฒ เธฃ เน เธ เธ เธต เน เธ เธญ เธข
เธ เธญ เธ เธญ เธท เน เธก เนเธ เธฃ เธฑ เธช เธฑ เธ เนเธ เธ เน เธฒ เธช เธฒ เธ เนเธ เธ เธเธต เธจเธด เธฅ เธ เธง เธฑ เธ เธ เธเธฃ เธฃ เธก เนเธ เธฅ เธ เน เธ เธด เน เธ เนเธ เน เธ เธฑ เธ เธ เธฑ เธ เนเธ เธฅ เธ เธฅ เน เธญ เธ เธก เธฒ เธก เน เธฒ เธเธฒ เธ เธธ เธฃ เธฐ เธ เธต เธฅ เนเธฅ เธญ
เธฃ เน เธเธต เธ เธ เธฑ เธก เธ เน เนเธฎ เธ เธ เธต เน เนเธญ เน เน เธฒ เธฐ เธญ เธธ เธฃ เธฑ เธ เธ เธเธฒ เธ เธธ เธเธด เธก เธเธด เธ เธด เธ เธเน เนเธ เธฃ เธฅ เนเธฅ เน เธญ เธฃ เน เธญ เธง เธญ เธฃ เน เธ เนเธ เธ เธข เธญ เธ เธช เธก เธฒ เธ เธฑ เธ เธเน เธ เธฃ เธฑ เธง เธเธญ เธ เธฎเธฑ เธก เธญ เธฒ
เธเน เธฒ เนเธญ เน เธ เธเน เนเธ เธฃ เธช
Note - Bahasa yang ditentukan pertama kali ke -l
parameter adalah bahasa utama.
Sayangnya tesseract tidak memiliki fitur untuk mendeteksi bahasa teks pada gambar secara otomatis. Solusi alternatif disediakan oleh modul python lain yang disebut langdetect
yang dapat dipasang melalui pip.
$ pip install langdetect
Modul ini sekali lagi, tidak mendeteksi bahasa teks menggunakan gambar tetapi membutuhkan input string untuk mendeteksi bahasanya. Cara terbaik untuk melakukannya adalah dengan menggunakan tesseract terlebih dahulu untuk mendapatkan teks OCR dalam bahasa apa pun yang mungkin Anda rasakan di sana, menggunakan langdetect
untuk menemukan bahasa apa yang disertakan dalam teks OCR dan kemudian menjalankan OCR lagi dengan bahasa yang ditemukan.
Katakanlah kita memiliki teks yang kita pikir dalam bahasa Inggris dan Portugis.
custom_config = r'-l eng+por --psm 6'
txt = pytesseract.image_to_string(img, config=custom_config) from langdetect import detect_langs
detect_langs(txt)
Ini harus menampilkan daftar bahasa dalam teks dan probabilitasnya.
[en:0.714282468983554, es:0.2857145605644145]
Kode bahasa yang digunakan oleh langdetect
ikuti kode ISO 639-1. Untuk membandingkan, silakan periksa ini dan ini. Kami menemukan bahwa bahasa yang digunakan dalam teks tersebut adalah bahasa Inggris dan Spanyol.
Kami mendapatkan teks lagi dengan mengubah config menjadi
custom_config = r'-l eng+spa --psm 6'
txt = pytesseract.image_to_string(img, config=custom_config)
Note โ Tesseract berkinerja buruk ketika, dalam gambar dengan banyak bahasa, bahasa yang ditentukan dalam konfigurasi salah atau tidak disebutkan sama sekali. Ini juga bisa sedikit menyesatkan modul langdetect.
Menggunakan tessdata_fast
Jika kecepatan adalah perhatian utama Anda, Anda dapat mengganti model bahasa tessdata Anda dengan model tessdata_fast yang merupakan versi integer 8-bit dari model tessdata.
Menurut tessdata_fast github -
Repositori ini berisi versi integer cepat dari model terlatih untuk Mesin OCR Sumber Terbuka Tesseract.
Model ini hanya bekerja dengan mesin LSTM OCR dari Tesseract 4.
- Ini adalah kompromi kecepatan/akurasi tentang apa yang menawarkan "nilai uang" terbaik dalam kecepatan vs akurasi.
- Untuk beberapa bahasa, ini masih yang terbaik, tetapi untuk sebagian besar tidak.
- Konfigurasi jaringan "nilai terbaik untuk uang" kemudian digabungkan untuk kecepatan lebih lanjut.
- Sebagian besar pengguna ingin menggunakan file data terlatih ini untuk melakukan OCR dan ini akan dikirimkan sebagai bagian dari distribusi Linux misalnya. Ubuntu 18.04.
- Penyetelan halus / pelatihan tambahan akan JANGAN mungkin dari ini
fast
model, karena merupakan bilangan bulat 8-bit. - Saat menggunakan model dalam repositori ini, hanya mesin OCR berbasis LSTM baru yang didukung. Warisan
tesseract
engine tidak didukung dengan file-file ini, jadi mode oem Tesseract '0' dan '2' tidak akan bekerja dengannya.
Untuk menggunakan tessdata_fast
model, bukan tessdata
, yang perlu Anda lakukan hanyalah mengunduh file tessdata_fast
file data bahasa dari di sini dan letakkan di dalam $TESSDATA_PREFIX
direktori.
Perlu mendigitalkan dokumen, kwitansi atau faktur tetapi terlalu malas untuk kode? Kepala ke Nanonet dan bangun model OCR gratis!
Melatih Tesseract pada data khusus
Tesseract 4.00 menyertakan mesin pengenalan berbasis jaringan saraf baru yang memberikan akurasi lebih tinggi pada gambar dokumen. Jaringan saraf membutuhkan data pelatihan yang jauh lebih banyak dan melatih jauh lebih lambat daripada basis Tesseract. Untuk bahasa berbasis Latin, data model yang ada telah dilatih pada sekitar 400000 baris teks yang mencakup sekitar 4500 font.
Agar berhasil menjalankan tutorial pelatihan Tesseract 4.0 LSTM, Anda harus memiliki instalasi yang berfungsi dari Tesseract 4 dan Tesseract 4 Training Tools dan juga memiliki skrip pelatihan dan file data terlatih yang diperlukan di direktori tertentu. Mengunjungi repo github untuk file dan alat.
Tesseract 4.00 membutuhkan beberapa hari hingga beberapa minggu untuk pelatihan dari awal. Meskipun dengan semua data pelatihan baru ini, berikut beberapa opsi untuk pelatihan:
- Melodi indah - Dimulai dengan bahasa terlatih yang ada, latih data tambahan spesifik Anda. Misalnya pelatihan tentang set data tulisan tangan dan beberapa font tambahan.
- Potong lapisan atas โ dari jaringan dan latih kembali lapisan atas baru menggunakan data baru. Jika penyetelan halus tidak berhasil, kemungkinan besar ini adalah opsi terbaik berikutnya. Analogi mengapa ini berguna, ambil contoh model yang dilatih pada dataset ImageNet. Tujuannya adalah untuk membangun pengklasifikasi kucing atau anjing, lapisan bawah dalam model bagus dalam abstraksi tingkat rendah sebagai sudut, garis horizontal dan vertikal, tetapi lapisan yang lebih tinggi dalam model menggabungkan fitur-fitur itu dan mendeteksi telinga, mata, hidung kucing atau anjing dan seterusnya. Dengan melatih ulang hanya lapisan atas, Anda menggunakan pengetahuan dari lapisan bawah dan menggabungkannya dengan kumpulan data baru yang berbeda.
- Latih kembali dari awal - Ini adalah pendekatan yang sangat lambat kecuali Anda memiliki set pelatihan yang sangat representatif dan cukup besar untuk masalah Anda. Sumber daya terbaik untuk pelatihan dari awal mengikuti ini repo github.
Panduan tentang cara melatih data kustom Anda dan membuat .traineddata
file dapat ditemukan di sini, di sini dan di sini.
Kami tidak akan membahas kode untuk pelatihan menggunakan Tesseract di postingan blog ini.
Batasan Tesseract
Tesseract berfungsi paling baik jika ada segmentasi yang bersih pada teks latar depan dari latar belakang. Dalam praktiknya, bisa jadi sangat menantang untuk menjamin jenis penyiapan ini. Ada berbagai alasan mengapa Anda tidak mendapatkan hasil berkualitas baik dari Tesseract seperti jika gambar memiliki noise di latar belakang. Semakin baik kualitas gambar (ukuran, kontras, kilat), semakin baik pula hasil pengenalannya. Diperlukan sedikit pemrosesan awal untuk meningkatkan hasil OCR, gambar perlu diskalakan dengan tepat, memiliki kontras gambar sebanyak mungkin, dan teks harus sejajar horizontal. Tesseract OCR cukup kuat tetapi memiliki batasan berikut.
Batasan Tesseract dirangkum dalam daftar.
- OCR tidak seakurat beberapa solusi komersial yang tersedia bagi kami.
- Tidak cocok dengan gambar yang terpengaruh oleh artefak termasuk oklusi parsial, perspektif terdistorsi, dan latar belakang yang kompleks.
- Itu tidak mampu mengenali tulisan tangan.
- Ini mungkin menemukan omong kosong dan melaporkan ini sebagai keluaran OCR.
- Jika sebuah dokumen berisi bahasa di luar yang diberikan dalam argumen -l LANG, hasilnya mungkin buruk.
- Tidak selalu bagus dalam menganalisis urutan pembacaan alami dokumen. Misalnya, mungkin gagal mengenali bahwa sebuah dokumen berisi dua kolom, dan mungkin mencoba untuk menggabungkan teks di seluruh kolom.
- Pindaian berkualitas buruk dapat menghasilkan OCR berkualitas buruk.
- Itu tidak membeberkan informasi tentang jenis font keluarga teks.
Tentu saja ada cara yang lebih baik, lebih sederhana, dan lebih intuitif untuk melakukan tugas OCR.
OCR dengan Nanonets
Grafik Nanonet OCR API memungkinkan Anda membangun model OCR dengan mudah. Anda tidak perlu khawatir tentang pra-pemrosesan gambar Anda atau khawatir tentang template yang cocok atau membangun mesin berbasis aturan untuk meningkatkan akurasi model OCR Anda.
Anda dapat mengunggah data Anda, membuat anotasi, mengatur model untuk dilatih dan menunggu untuk mendapatkan prediksi melalui UI berbasis browser tanpa menulis satu baris kode, mengkhawatirkan GPU atau menemukan arsitektur yang tepat untuk model pembelajaran mendalam Anda. Anda juga dapat memperoleh respons JSON dari setiap prediksi untuk mengintegrasikannya dengan sistem Anda sendiri dan membangun aplikasi yang didukung mesin pembelajaran yang dibangun di atas algoritma canggih dan infrastruktur yang kuat.
Menggunakan GUI: https://app.nanonets.com/
Anda juga dapat menggunakan API Nanonets-OCR dengan mengikuti langkah-langkah di bawah ini: โ
Langkah 1: Mengkloning Repo, Instal dependensi
git clone https://github.com/NanoNets/nanonets-ocr-sample-python.git
cd nanonets-ocr-sample-python
sudo pip install requests tqdm
Langkah 2: Dapatkan Kunci API gratis Anda
Dapatkan Kunci API gratis Anda dari http://app.nanonets.com/#/keys
Langkah 3: Tetapkan kunci API sebagai Variabel Lingkungan
export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE
Langkah 4: Buat Model Baru
python ./code/create-model.py
Catatan: Ini menghasilkan MODEL_ID yang Anda butuhkan untuk langkah selanjutnya
Langkah 5: Tambahkan Id Model sebagai Variabel Lingkungan
export NANONETS_MODEL_ID=YOUR_MODEL_ID
Catatan: Anda akan mendapatkan YOUR_MODEL_ID dari langkah sebelumnya
Langkah 6: Unggah Data Pelatihan
Data pelatihan ditemukan di images
(file gambar) dan annotations
(anotasi untuk file gambar)
python ./code/upload-training.py
Langkah 7: Model Kereta
Setelah Gambar diunggah, mulailah melatih Model
python ./code/train-model.py
Langkah 8: Dapatkan Status Model
Model ini membutuhkan ~ 2 jam untuk berlatih. Anda akan mendapatkan email setelah model dilatih. Sementara itu Anda memeriksa keadaan model
python ./code/model-state.py
Langkah 9: Buat Prediksi
Setelah model dilatih. Anda dapat membuat prediksi menggunakan model
python ./code/prediction.py ./images/151.jpg
Nanonet dan Manusia di Lingkaran
Layar 'Sedang' membantu proses koreksi dan entri serta mengurangi beban kerja peninjau manual hingga hampir 90% dan mengurangi biaya organisasi hingga 50%.
Fitur termasuk
- Lacak prediksi yang benar
- Lacak yang mana yang salah
- Lakukan koreksi pada yang tidak akurat
- Hapus yang salah
- Isi prediksi yang hilang
- Saring gambar dengan rentang tanggal
- Dapatkan jumlah gambar yang dimoderasi terhadap yang tidak dimoderasi
Semua bidang disusun menjadi GUI yang mudah digunakan yang memungkinkan pengguna untuk mengambil keuntungan dari teknologi OCR dan membantu membuatnya menjadi lebih baik, tanpa harus mengetikkan kode apa pun atau memahami cara kerja teknologi.
Memiliki masalah OCR dalam pikiran? Ingin mengurangi biaya entri data organisasi Anda? Pergi ke Nanonet dan membangun model OCR untuk ekstrak teks dari gambar or mengekstrak data dari PDF!
Kesimpulan
Sama seperti pembelajaran mendalam telah memengaruhi hampir setiap aspek visi komputer, hal yang sama berlaku untuk pengenalan karakter dan pengenalan tulisan tangan. Model berbasis pembelajaran mendalam telah berhasil mendapatkan akurasi pengenalan teks yang belum pernah terjadi sebelumnya, jauh melampaui tradisional ekstraksi informasi dan pemrosesan gambar pembelajaran mesin pendekatan.
Tesseract bekerja dengan baik saat gambar dokumen mengikuti pedoman berikut:
- Membersihkan segmentasi teks latar depan dari latar belakang
- Disejajarkan secara horizontal dan diskalakan dengan tepat
- Gambar berkualitas tinggi tanpa keburaman dan noise
Rilis terbaru Tesseract 4.0 mendukung OCR berbasis pembelajaran dalam yang jauh lebih akurat. Mesin OCR sendiri dibangun di atas jaringan Long Short-Term Memory (LSTM), semacam Jaringan Neural Berulang (RNN).
Tesseract sangat cocok untuk memindai dokumen bersih dan hadir dengan akurasi dan variabilitas font yang cukup tinggi karena pelatihannya komprehensif. Saya akan mengatakan bahwa Tesseract adalah alat bantu jika tugas Anda memindai buku, dokumen, dan teks tercetak pada latar belakang putih bersih.
Selanjutnya Membaca
- Model terlatih terbaik untuk LSTM Tesseract 4.0
- Pendekatan Dropbox untuk OCR 4.2017
- Ikhtisar Warisan Mesin OCR Tesseract
- Forum untuk pengembang Tesseract
- Forum untuk pengguna Tesseract
- Perbandingan Akurasi OCR pada Buku Cetak Awal menggunakan
Mesin Sumber Terbuka Calamari dan OCRopus - OCR Bebas Leksikon yang Efisien menggunakan Pembelajaran Mendalam
- Kesesuaian Mesin OCR dalam Sistem Ekstraksi Informasi โ Evaluasi Komparatif
- Tolok Ukur DeepText
- Daftar Proyek OCR
- Tesseract Github Rilis Terbaru
- CVPR 2019 โ Kesadaran Wilayah Karakter untuk Deteksi Teks (CRAFT)
- OCR Kartu Kredit dengan OpenCV dan Python
- Prapemrosesan Gambar
- Pemrosesan Gambar di OpenCV
- OCR menggunakan Tesseract di Raspberry Pi
- Tesseract OCR untuk Bahasa Non-Inggris
- Bagaimana Melakukan OCR dari Baris Perintah Linux Menggunakan Tesseract
- Tinjauan Umum tentang Mesin OCR Tesseract
Update:
Banyak orang bertanya kepada kami bagaimana mereka bisa mendapatkan tanggal dalam bentuk teks atau menggunakan ketika mendeteksi tanggal atau data spesifik lainnya sehingga mereka dapat menambahkan ke daftar.
Inilah jawabannya:
Dalam kode untuk menggambar kotak pembatas di sekitar kotak tanggal, Anda akan melihat garis yang cocok dengan pola regex dengand['text']
. Itu hanya menarik sebuah kotak jika polanya cocok. Anda cukup mengekstrak nilainya darid['text']
setelah pola cocok dan menambahkannya ke daftar.
Update 2:
Untuk menjawab pertanyaan seputar OCR non-Inggris, kami telah memperbarui daftar bacaan lebih lanjut.
- 100
- 2019
- 7
- 9
- Tentang Kami
- Menurut
- tepat
- dicapai
- memperoleh
- di seluruh
- Tambahan
- alamat
- Keuntungan
- AI
- bantu
- algoritma
- Semua
- Membiarkan
- antara
- analisis
- Lain
- api
- pendekatan
- aplikasi
- DAERAH
- argumen
- sekitar
- Seni
- artikel
- Otomatis
- tersedia
- kesadaran
- makhluk
- TERBAIK
- Bit
- Blog
- Buku-buku
- batas
- Kotak
- Browser
- membangun
- built-in
- Bisa Dapatkan
- CD
- perubahan
- Lingkaran
- klaim
- Pembersihan
- CNN
- kode
- koleksi
- Kolom
- kombinasi
- komersial
- Perusahaan
- kompleks
- kepercayaan
- konfigurasi
- kebingungan
- mengandung
- Konversi
- Koreksi
- Biaya
- bisa
- sepasang
- data
- transaksi
- terdeteksi
- Deteksi
- menentukan
- dikembangkan
- pengembang
- Pengembangan
- MELAKUKAN
- berbeda
- berbeda
- digital
- mendigitalkan
- digit
- dokumen
- turun
- Menjatuhkan
- dropbox
- Awal
- Tepi
- Titik akhir
- energi
- Inggris
- Lingkungan Hidup
- segala sesuatu
- contoh
- diharapkan
- mengharapkan
- keluarga
- FAST
- Fitur
- Fitur
- Fields
- Pertama
- aliran
- mengikuti
- berikut
- garpu
- bentuk
- format
- bentuk
- ditemukan
- Gratis
- fungsi
- mendapatkan
- pergi
- GitHub
- Pemberian
- tujuan
- baik
- abu-abu
- Grayscale
- besar
- membimbing
- pedoman
- hacks
- memiliki
- kepala
- di sini
- High
- memegang
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- HTTPS
- besar
- Manusia
- mengenali
- gambar
- Dampak
- melaksanakan
- penting
- memperbaiki
- Di lain
- termasuk
- Termasuk
- Meningkatkan
- Info
- informasi
- Infrastruktur
- mengintegrasikan
- intuitif
- IT
- ikut
- kunci
- kunci-kunci
- pengetahuan
- dikenal
- Labs
- bahasa
- Bahasa
- besar
- Terbaru
- BELAJAR
- pengetahuan
- Perpustakaan
- Lisensi
- petir
- baris
- linux
- Daftar
- daftar
- Panjang
- mac
- mesin
- Mesin belajar
- utama
- Membuat
- panduan
- Pasar
- Cocok
- Memori
- keberatan
- model
- model
- paling
- jaringan
- berbasis jaringan
- jaringan
- Kebisingan
- Buka
- open source
- pembukaan
- pilihan
- Opsi
- urutan
- pengorganisasian
- Lainnya
- jika tidak
- pola
- Konsultan Ahli
- prestasi
- perspektif
- miskin
- Populer
- mungkin
- kuat
- ramalan
- Prediksi
- pers
- cukup
- primer
- Masalah
- proses
- proses
- menghasilkan
- Programmer
- Pemrograman
- bahasa pemrograman
- program
- proyek
- memberikan
- menyediakan
- kualitas
- Tarif
- Mentah
- RE
- Bacaan
- alasan
- menurunkan
- reguler
- tetap
- melaporkan
- gudang
- membutuhkan
- wajib
- penelitian
- sumber
- ISTIRAHAT
- Hasil
- Run
- berjalan
- pemindaian
- Layar
- segmentasi
- Layanan
- set
- Pendek
- mirip
- Sederhana
- Ukuran
- kecil
- So
- Perangkat lunak
- Solusi
- Spanyol
- spesifikasi
- kecepatan
- Negara
- Negara
- kuat
- berhasil
- Didukung
- Mendukung
- SWIFT
- sistem
- sistem
- tugas
- Teknologi
- terminal
- uji
- Melalui
- waktu
- alat
- puncak
- tradisional
- Pelatihan
- Mengubah
- mengobati
- Tren
- Ubuntu
- ui
- memahami
- unik
- us
- menggunakan
- kasus penggunaan
- Pengguna
- nilai
- penglihatan
- W
- menunggu
- berjalan
- Apa
- Apa itu
- whitelist
- Wikipedia
- Windows
- dalam
- tanpa
- kata
- Kerja
- kerja
- bekerja
- penulisan
- X