- 01Awalnya Karena “Ingat Sudah Melihatnya, Tapi Lupa Isinya”
- 02Alur Sistemnya
- 03Trik pada Bagian OCR
- 04Aturan Klasifikasi
- 05Contoh Nyata Pendaftaran ke Kalender
- 06Pendaftaran ke Reminder/Task, dan Duplikasi yang Disengaja
- 07Masalah Tahun yang Tidak Dituliskan
- 08Yang Saya Rasakan Setelah Mencoba
- 09Cocok untuk Orang Seperti Apa
- 10Rangkuman
Selamat pagi, saya Masakin.
Lembar kertas yang dibagikan dari sekolah, sampai sekarang masih didominasi bentuk fisik. Tanggal acara, deadline barang yang harus diserahkan, barang bawaan. Jenis informasinya banyak, dan kalau sampai terlewat bisa merepotkan nanti.
Karena itu, saya membuat sistem yang membaca lembar kertas dengan OCR, lalu otomatis memilah dan mendaftarkannya ke kalender dan reminder sesuai jenisnya. Kali ini saya akan memperkenalkan secara konkret sampai contoh nyata pemanggilan API.
Awalnya Karena “Ingat Sudah Melihatnya, Tapi Lupa Isinya”
Lembar kertas, sekali dilihat rasanya sudah cukup diingat saat itu. Tapi seminggu kemudian, isinya sudah terlupakan. Ada juga kasus tetap ditempel di kulkas sampai deadline-nya terlewat.
“Melihat” dan “menjalankan tanpa lupa” adalah dua hal yang berbeda. Karena itu, saya mengotomatisasi bagian memasukkan isi yang sudah dilihat ke dalam sebuah sistem.
Alur Sistemnya
Yang saya lakukan ada 3 tahap berikut.
- Scan lembar kertas, ubah jadi data teks dengan OCR, termasuk yang layoutnya 2 kolom
- Klasifikasikan isinya sebagai “acara” atau “yang harus dilakukan” seperti barang yang harus diserahkan atau deadline
- Berdasarkan hasil klasifikasi, daftarkan otomatis lewat API ke aplikasi yang sesuai
Acara masuk ke kalender, yang harus dilakukan masuk ke reminder. Poinnya adalah memisahkan tempat penyimpanan sesuai perannya.
Trik pada Bagian OCR
Lembar kertas dari sekolah kebanyakan berformat A4 dengan 2 kolom, dan kalau langsung dimasukkan ke OCR, terkadang teks kiri dan kanan tercampur di tengah baris. Karena itu, saya membagi gambar menjadi kiri dan kanan dulu, sebelum masing-masing diberikan ke OCR.
from PIL import Image
def split_two_columns(image_path):
img = Image.open(image_path)
width, height = img.size
left = img.crop((0, 0, width // 2, height))
right = img.crop((width // 2, 0, width, height))
return left, right
Hanya dengan pembagian ini, akurasi pengenalan cukup meningkat banyak. Kalau setelah dilihat hasilnya teks kiri dan kanan masih tercampur, saya coba bagi jadi 3 bagian bukan 2, atau sesuaikan area pemotongan berdasarkan posisi judul. Hasil pembacaan selalu saya bandingkan langsung dengan gambar lembar aslinya, bukan hanya data teksnya saja. Karena tabel dan garis mudah rusak saat OCR, dan terutama kalau kombinasi tanggal dan hari salah, bisa berakibat fatal saat didaftarkan ke kalender.
Aturan Klasifikasi
Saya menyusun kriteria membedakan acara dan yang harus dilakukan sebagai berikut.
| Jenis | Kriteria | Tujuan pendaftaran | Kode warna |
|---|---|---|---|
| Acara yang perlu dihadiri | Jadwal yang butuh kehadiran orang tua | Kalender | Merah |
| Deadline/pembayaran | Batas waktu barang yang diserahkan atau iuran | Kalender + Reminder | Oranye |
| Barang bawaan/persiapan | Yang harus disiapkan sebelum hari H | Reminder | Tidak ada |
| Barang bawaan harian | Barang rutin seperti alat tulis, buku catatan | Tidak didaftarkan | - |
Untuk item yang sulit diklasifikasikan, prinsipnya saya pilih “lebih baik didaftarkan ke keduanya”. Kalau ternyata tidak perlu, bisa dihapus belakangan, tapi kalau lupa didaftarkan, bisa jadi tidak disadari sama sekali.
Sistem ini akhirnya berjalan di dalam smartphone. Baik kalender maupun reminder, notifikasinya sampai ke smartphone saya. Sebagai dasar yang menopang sistem ini, mungkin ada baiknya juga meninjau ulang paket tarifnya sesekali.
Setelah diklik, halaman login Rakuten akan terbuka. Setelah login, detail kampanye akan muncul.
Contoh Nyata Pendaftaran ke Kalender
Acara saya daftarkan lewat API Google Calendar. Untuk kode warna, saya pakai parameter colorId, dengan acara wajib hadir diberi warna merah (colorId: "11"), dan yang berkaitan dengan deadline diberi warna oranye (colorId: "6").
title: "SD ○○: Acara Olahraga"
start.date: "2026-05-23"
end.date: "2026-05-24" # untuk acara sehari penuh, end dijadikan hari berikutnya
description: "Ringkasan bagian yang relevan dari lembar kertas"
colorId: "11" # merah karena butuh kehadiran orang tua
colorId harus diberikan sebagai string, bukan angka, kalau diberikan sebagai tipe angka akan jadi error API. Untuk acara dengan waktu yang sudah pasti, misalnya pertemuan orang tua jam 2 siang, saya daftarkan dengan menentukan waktu mulai dan selesai, bukan sebagai event sehari penuh.
Sebelum mendaftarkan, saya selalu memeriksa apakah sudah ada event dengan judul dan tanggal yang sama. Kadang acara yang sama tertulis di dua lembar yang berbeda, misalnya buletin tingkat kelas dan lembar lainnya, dan kalau pengecekan ini dilewati, jadwal yang sama akan terdaftar dobel.
Pendaftaran ke Reminder/Task, dan Duplikasi yang Disengaja
Deadline dan barang bawaan, saya daftarkan dengan judul yang sama ke aplikasi manajemen tugas dan aplikasi reminder sekaligus. Sekilas terasa berlebihan, tapi ini memang saya sengaja.
python3 things_bridge_client.py add \
--title "SD ○○: Pesan Set Kaligrafi (sampai 17 April)" \
--when "2026-04-17" \
--tags "sekolah,anak,uang" \
--notes "Pembayaran cashless. Lewat QR di formulir pendaftaran."
Aplikasi manajemen tugas cocok untuk dikelola secara terstruktur sebagai checklist. Sementara aplikasi reminder punya karakteristik mudah dilihat sekilas lewat asisten suara atau notifikasi standar. Karena kelebihan masing-masing tools berbeda, saya sengaja mendaftarkannya dobel.
Kalau hanya didaftarkan di satu tempat, pada hari tidak membuka aplikasi itu, informasinya sama saja seperti tidak ada. Dengan menyimpannya dobel, risiko terlewat bisa dikurangi. Tapi, untuk menghindari noise dari pendaftaran dobel, sebelum mendaftarkan ke reminder saya selalu mengambil daftar yang sudah ada, dan memastikan tidak ada judul yang sama.
Periksa daftar reminder yang sudah ada (mencegah duplikasi)
→ Kalau tidak ada reminder dengan judul yang sama, daftarkan baru dengan judul
dan deadline yang sama seperti di aplikasi manajemen tugas
Kalau judulnya dibuat sama persis, nanti juga lebih mudah dicari saat ingin mencocokkan keduanya.
Masalah Tahun yang Tidak Dituliskan
Lembar kertas sekolah, hampir selalu menuliskan seperti “15 April (Rabu)” tanpa mencantumkan tahun. Perlu menambahkan tahun dari tahun ajaran saat ini, tapi kalau lembar yang dibagikan bulan Maret menuliskan “April”, saya selalu mempertimbangkan kemungkinan itu mengacu ke bulan April tahun ajaran berikutnya.
Selain itu, saat memproses penulisan hari, saya selalu menghitung hari secara mekanis dari tanggal, bukan mengandalkan tangan atau memori. Karena kalau mengandalkan memori manusia, mudah sekali terjadi selisih.
Yang Saya Rasakan Setelah Mencoba
Yang paling membantu adalah hilangnya kondisi “sudah lihat tapi lupa”. Begitu dibaca, langsung tercermin ke kalender atau reminder, sisanya cukup mengikuti notifikasi.
Tapi, akurasi OCR tidak sepenuhnya sempurna. Terutama lembar dengan catatan tambahan tulisan tangan, kadang sulit dibaca. Untuk kasus seperti itu, saya tidak memaksakan otomatisasi, dan memeriksa dengan mata saya sendiri sebelum mendaftarkannya.
Cocok untuk Orang Seperti Apa
- Orang yang sering tidak sadar melewatkan lembar kertas dari sekolah
- Orang yang memisahkan penggunaan kalender dan manajemen tugas
- Orang yang tertarik dengan otomatisasi kecil menggunakan OCR dan integrasi API
Rangkuman
Saya membuat sistem yang mengklasifikasikan isi lembar kertas menjadi “acara” dan “yang harus dilakukan”, lalu mendaftarkannya otomatis ke tempat yang sesuai. Hanya dengan menentukan aturan sederhana seperti kode warna, pendaftaran dobel, dan pengecekan duplikasi, penanganan informasinya jadi jauh lebih rapi.
Bagaimana memasukkan informasi kertas ke dalam sebuah sistem, menurut saya adalah trik yang sederhana tapi efeknya besar.
Pada akhirnya, tujuan notifikasi selalu smartphone saya. Semakin lama sistem ini dipakai, semakin besar juga porsi pentingnya koneksi internet. Mungkin tidak ada ruginya sesekali memeriksa juga paket tarifnya.
Setelah diklik, halaman login Rakuten akan terbuka. Setelah login, detail kampanye akan muncul.
Artikel ini mengandung iklan afiliasi. Jika Anda mendaftar produk atau layanan melalui tautan di situs ini, kami mungkin menerima komisi dari perusahaan mitra. Selain itu, pengelola adalah karyawan Rakuten Group dan mungkin menerima imbalan melalui program referral karyawan. Konten dan penilaian artikel dibuat berdasarkan pengalaman nyata dan riset pengelola, terlepas dari ada atau tidaknya iklan, namun kami harap Anda membaca dengan memahami hubungan di atas. Untuk detailnya, silakan lihat Sangkalan & Info Afiliasi. Sangkalan & Info Afiliasi
Artikel ini menggunakan terjemahan mesin. Untuk syarat resmi, silakan cek halaman multibahasa di situs resmi Rakuten Mobile.
Jika Anda memiliki kekhawatiran tentang area jangkauan atau kondisi sinyal Rakuten Mobile, Anda dapat berkonsultasi melalui formulir permintaan perbaikan sinyal resmi.