OCR - Scan Gambar ke Text Bot Telegram (GAS II-15)
Mari kita buat bot untuk menscan foto, gambar, atau bahkan PDF menjadi tulisan atau text. Sebuah teknologi yang saat ini dikenal secara umum dengan sebutan OCR.
Pengantar
Fitur scan foto menjadi text sudah menjadi lazim dibutuhkan oleh banyak orang. Fitur ini biasanya di sebut sebagai OCR, atau Optical Character Recognition. Sederhananya, OCR adalah mengubah file citra, baik itu berupa foto atau pdf, menjadi dokumen bertipe teks.
Ketika sudah menjadi teks, akan lebih mudah diolah kembali. Misalnya untuk di copas diterjemahkan, dicarikan informasinya di wikipedia, dan lain sebagainya.
Fitur OCR sangat penting dan banyak dibutuhkan orang. Sifatnya yang general, atau umum dipakai. Maka layak fitur ini di adopsi di dalam bot kalian.
Oke deh, langsung saja kita akan membuat bot pembaca foto atau gambar menjadi text dengan memanfaatkan OCR versi Google Drive.
Definisi
Jika belum paham mengenai OCR, dapat membaca literasinya di https://mti.binus.ac.id/2017/07/03/optical-character-recognition-ocr/
Preview
Berikut preview atau intro nya:
1. Update Library
Upgrade library GAS menjadi versi 21
2. Tambah Layanan
Tambahkan layanan Drive
3. Code
Silakan lihat Hello Bot ya buat memulainya.
3.1 Fungsi
Buat fungsi baru untuk membaca OCR dari sebuah URL.
Letakkan di bagian Kode.gs
paling bawah.
// fungsi untuk membaca OCR
function scanOCR(chatID, photoID) {
tg.sendMessage(chatID, '💁🏽♂️ Ditunggu ya, pesan sedang diproses..')
tg.sendChatAction(chatID, 'typing')
let file = tg.getFileLink(photoID)
// variable hasil
let text = 'belum ada'
try {
let blob = UrlFetchApp.fetch(file).getBlob()
let resource = {
title: blob.getName(),
mimeType: blob.getContentType()
}
let docFile = Drive.Files.insert(resource, blob, { ocr: true })
let doc = DocumentApp.openById(docFile.id)
// ekstrak file doc nya untuk mendapatkan text
text = doc.getBody().getText()
// hapus file doc tidak kita pakai lagi
Drive.Files.remove(docFile.id)
} catch (e) {
// jika ERROR
text = 'ERROR: ' + e.message
}
Logger.log('chatID: ' + chatID + 'text: ' + text)
return tg.sendMessage(chatID, text)
}
Contoh foto yang akan dicoba dalam tutorial ini:
3.2 Pemicu
Pemicu nya kita ambil jika ada foto yang dikirim user.
Letakkan pada Proses.gs
, dibagian msg.photo
(pada Tutorial Hello Bot)
// deteksi jika ada foto
if (msg.photo) {
// taruh codinganmu di sini
// misal menampilkan foto ID
// tg.sendMsg(msg, '⚜️ File ID: ' + msg.photo[0].file_id)
var photoID = msg.photo[msg.photo.length - 1].file_id
return scanOCR(msg.chat.id, photoID)
}
3.3 Bonus
Materi bonus ini tidak ada di video. Yakni code untuk mendeteksi Reply Message yang berisi gambar.
Letakkan pada pendeteksi text.
if (/^[!\/]ocr/i.exec(msg.text)) {
if (msg.reply_to_message) {
if (msg.reply_to_message.photo) {
var photo = msg.reply_to_message.photo
var photoID = photo[photo.length - 1].file_id
return scanOCR(msg.chat.id, photoID)
}
}
return true
}
4 Deploy
Deploy new version, beri akses untuk perubahan dokumen dan drive.
5 Selesai dan Test
Silakan di test bot nya.
Video
Silakan simak video nya, agar lebih jelas penggunaannya.
Silakan cek juga playlist lainnya :
Referensi
Sebagai referensi dan tambahan bacaan dan materi, silakan diperiksa sebagai berikut:
- Hello Bot
- Regex Dasar
- Library GAS Telegram Versi 2
- Format Text / Parse Mode
- Bot API Telegram
- Drive Ref
- Free OCR API
Penutup
Apabila materi ini banyak peminatnya, mungkin akan dilanjutkan ke pengembangan spreadsheet lainnya.
Jika ada pertanyaan silakan bergabung ke grup Telegram @botIndonesia bersama para coder lainnya kita saling sapa, diskusi, sharing dan silaturrahim.
Mohon maaf jika ada salah-salah kata ada khilaf, dan semoga bermanfaat.