OCR - Scan Gambar ke Text Bot Telegram (GAS II-15)

3 menit saja |

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

lib 2.21

"Yuk Belajar"

2. Tambah Layanan

Tambahkan layanan Drive

lib 2.21

"Yuk Belajar"

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:

foto dilan

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)
    }

"Yuk Belajar"

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.

"Yuk Belajar"

5 Selesai dan Test

Silakan di test bot nya.

lib 2.21

Video

Silakan simak video nya, agar lebih jelas penggunaannya.

Silakan cek juga playlist lainnya :

Referensi

"Yuk Belajar"

Sebagai referensi dan tambahan bacaan dan materi, silakan diperiksa sebagai berikut:

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.