Digit pemeriksa EAN UPC adalah lambang terakhir pada nomor barang yang tercetak di bawah garis-garis barcode. Lambang itu dihitung dari seluruh lambang sebelumnya, sehingga kesalahan pemindaian yang sederhana dapat dikenali seketika, sebelum nomor yang salah masuk ke sistem kasir atau sistem persediaan. Halaman ini menjelaskan asal digit tersebut, susunan bobot yang membedakannya dari keluarga algoritma lain, dan batas tegas dari hasil pemeriksaannya.
Dari mana datangnya digit terakhir pada barcode?
Nomor barang tidak diberikan seluruhnya oleh satu pihak. Sebagian lambang di awal menandai rentang nomor yang dialokasikan, sedangkan lambang terakhir dihitung sebagai penutup rangkaian. Perhitungan itu dilakukan oleh pihak yang menyusun nomornya, dan hasilnya menjadi bagian tetap dari nomor tersebut.
Karena digit terakhir ditentukan oleh perhitungan, mengubah satu lambang di tengah nomor tanpa menghitung ulang akan membuat nomor itu tidak lagi konsisten. Sifat inilah yang membuat barcode dapat diperiksa hanya dengan membaca nomornya, tanpa menghubungi basis data mana pun.
Perlu ditegaskan sejak awal bahwa pemeriksaan ini bekerja pada angka, bukan pada gambar. Alat pemindai mengubah garis menjadi deretan angka, dan pemeriksaan berjalan atas deretan angka itu. Karena itu kualitas cetak dan kualitas pemindaian tetap menentukan, terlepas dari benar atau tidaknya angka yang terbaca.
Dua panjang barcode yang umum dan susunan bobotnya
Ada dua panjang yang paling sering dijumpai. Nama keduanya sudah memuat panjangnya: EAN-13 dan UPC-A. Keduanya memakai gagasan yang sama, yaitu penjumlahan berbobot yang hasilnya diperiksa terhadap sebuah modulus, tetapi titik mulai pemberian bobotnya berbeda karena jumlah lambangnya berbeda.
| Ciri | EAN-13 | UPC-A |
|---|---|---|
| Panjang yang dipakai | Lebih panjang | Lebih pendek |
| Titik mulai bobot | Dihitung dari sisi kanan | Dihitung dari sisi kanan |
| Arah pergantian bobot | Bergantian antarlambang | Bergantian antarlambang |
| Akibat perbedaan | Hasil berbeda bila aturan panjang tertukar | Hasil berbeda bila aturan panjang tertukar |
Kesalahan yang paling sering terjadi justru muncul dari tabel di atas. Ketika kode hanya menuliskan satu aturan, nomor dengan panjang yang lain akan dihitung dengan titik mulai yang salah, sehingga hasilnya menyimpang meskipun angkanya benar. Karena itu, aturan panjang harus dipilih setelah panjang masukan diketahui, bukan sebelum.
Perbedaan panjang juga memengaruhi cara pembacaan hasil oleh manusia. Nomor yang lebih panjang biasanya dibagi menjadi kelompok agar mudah dibaca, dan pembagian itu hanya alat bantu tampilan. Ia tidak mengubah nilai nomornya dan tidak boleh ikut dihitung.
Gagasan penjumlahan berbobot dari kanan
Untuk memahami cara kerjanya, bayangkan lambang-lambang nomor berbaris dari kiri ke kanan. Perhitungan dimulai dari sisi kanan, lalu setiap lambang dikalikan dengan bobot yang bergantian antara dua nilai kecil. Hasil seluruh perkalian dijumlahkan, lalu jumlah itu diperiksa terhadap modulus dengan cara mencari selisih menuju kelipatan berikutnya. Selisih itulah yang menjadi digit pemeriksa.
Karena bobotnya bergantian, bobot yang diterima sebuah posisi bergantung pada jaraknya dari ujung kanan, bukan pada posisinya dari kiri. Akibatnya, menambahkan atau membuang satu lambang di depan akan menggeser seluruh pemberian bobot, dan itulah sebabnya aturan panjang tidak boleh disamakan antara dua panjang yang berbeda.
Gagasan ini menempatkan barcode dalam keluarga besar algoritma yang sama dengan skema lain, yaitu penjumlahan berbobot, pengambilan sisa, lalu pemetaan hasilnya menjadi satu lambang. Yang membedakan hanyalah nilai bobot dan modulus yang dipakai. Perbandingan antaranggota keluarga itu dibahas tersendiri pada algoritma digit pemeriksa.
Apa yang dikatakan dan tidak dikatakan oleh prefiks barcode
Lambang-lambang di bagian depan nomor barang berasal dari rentang nomor yang dialokasikan oleh organisasi penomoran. Rentang itu dipetakan ke negara atau wilayah, sehingga orang sering membacanya sebagai keterangan tempat asal. Pembacaan seperti itu keliru.
Prefiks hanya menyatakan di mana rentang nomor itu dialokasikan, bukan di mana barang diproduksi. Sebuah perusahaan dapat memakai rentang nomor dari satu wilayah sementara pabriknya berada di wilayah lain, dan hal itu sepenuhnya wajar. Menjadikan prefiks sebagai penanda asal produksi berarti menambahkan makna yang tidak pernah ada padanya.
Hal serupa berlaku untuk pembagian rentang di dalam nomor. Sebagian lambang dipakai untuk menandai penerbit nomor, dan sisanya dipakai penerbit untuk menandai barangnya sendiri. Ketika pembagian itu berubah, satu perusahaan dapat memakai dua bentuk nomor yang berbeda, dan keduanya benar.
Lolos pemeriksaan berarti pasti bisa dipindai?
Tidak. Lolosnya perhitungan hanya berarti deretan angka yang terbaca konsisten dengan digit pemeriksanya. Ia tidak menjamin bahwa garis-garis pada label cukup tajam untuk dipindai, tidak menjamin bahwa labelnya tidak rusak, dan tidak menjamin bahwa nomor itu terdaftar pada penerbit mana pun.
Yang lebih penting, pemeriksaan ini sama sekali bukan alat pembuktian keaslian. Siapa pun yang memahami aritmetikanya dapat menghitung digit pemeriksa yang benar untuk rangkaian angka apa pun yang ia susun sendiri. Karena itu, kemampuan menghitung digit pemeriksa tidak boleh dipakai sebagai bukti bahwa sebuah barang berasal dari produsen tertentu.
Seluruh contoh yang dipakai untuk menjelaskan gagasan di halaman ini adalah nomor rekaan yang disusun hanya untuk keperluan penjelasan. Tidak ada yang menunjuk barang, produsen, atau paket yang benar-benar ada, dan kecocokan hasil hitungnya tidak berkaitan dengan keaslian barang apa pun.
Untuk pengembang: pemindaian massal dan pelacakan galat
Pada pekerjaan yang memproses banyak nomor sekaligus, langkah pertama bukan perhitungan, melainkan pembersihan. Buang spasi dan pemisah, pastikan hanya lambang yang diizinkan yang tersisa, lalu tentukan panjang masukan sebelum memilih aturan pemeriksaan yang sesuai.
Ketika sebuah nomor ditolak, laporkan baris dan nilai aslinya, bukan hanya jumlah kesalahan. Pada pemindaian massal, penyebab penolakan yang paling sering bukanlah nomor yang salah, melainkan pembacaan yang kurang atau berlebih satu lambang karena label bergeser atau terlipat. Laporan yang menyertakan nilai asli memungkinkan orang memeriksa dugaan itu dengan cepat.
Sediakan pula pemeriksaan ulang yang terpisah dari pemeriksaan bentuk. Aplikasi kasir biasanya memerlukan keduanya: memastikan angka yang terbaca masuk akal, dan memastikan nomor itu memang ada dalam daftar barang yang dijual. Alat validasi nomor memperlihatkan bagaimana hasil bentuk dipisahkan dari hasil yang memerlukan pencarian ke daftar lain. Untuk melihat bagaimana gagasan serupa bekerja pada nomor dengan lambang huruf, lanjutkan ke pembahasan digit pemeriksa ISBN dan ISSN.
Ingat bahwa digit pemeriksa bukan bagian dari pencarian barang. Ketika pemindai membaca sebuah deretan, digit terakhir dipakai untuk memastikan deretan itu tidak rusak di tengah jalan, bukan untuk menemukan barangnya. Pencarian tetap dilakukan atas bagian penanda barang, sehingga dua deretan yang berbeda hanya pada digit pemeriksanya tidak dapat menunjuk pada dua barang yang berbeda.
Karena itu, tangani bacaan yang gagal dengan mengulang pemindaian, bukan dengan menambal deretannya. Menambal satu lambang agar perhitungannya lolos akan menghasilkan deretan yang tidak menunjuk pada apa pun, dan kesalahan seperti itu jauh lebih sulit dilacak daripada kegagalan yang terlihat sejak awal.
Apa berikutnya?
Ujilah aturan panjang yang Anda pakai dengan dua contoh berbeda panjang, lalu pastikan keduanya memakai titik mulai bobot yang benar. Setelah itu, buka alat validasi nomor untuk melihat bagaimana hasil periksa ditampilkan pada nomor barang. Bila Anda juga menangani nomor buku dan terbitan, pembahasan digit pemeriksa ISBN dan ISSN melanjutkan gagasan yang sama pada kumpulan karakter yang berbeda. Saat menyiapkan berkas ujinya, catatan konsistensi bidang membantu memastikan nilai yang Anda pakai tetap serasi antar bidang.