Saya mencari cara untuk mentransfer file hanya menggunakan pena dan kertas.
Ini agak mirip dengan paperbak , kecuali kepadatan yang saya cari jauh, jauh lebih rendah, dan saya tidak ingin menggunakan printer atau pemindai.
Jelas, jawaban pertama adalah encoding Base64 . Tetapi menulis dan membaca jumlah karakter yang tinggi pasti akan menghasilkan kesalahan. Untuk tujuan saya, kesalahan apa pun tidak dapat diterima.
Jawaban kedua mungkin kode koreksi kesalahan Reed-Solomon (misalnya, menggunakan rsbep ). Namun, ini juga masalah, karena dari pemahaman saya, kode Reed-Solomon tidak memperbaiki kesalahan penyisipan / penghapusan, yang mungkin lebih mungkin daripada kesalahan substitusi dalam kasus ini.
Apakah ada program yang akan menyandikan / mendekode file sewenang-wenang dengan kode koreksi kesalahan penyisipan / penghapusan? Lebih disukai itu harus bekerja pada Windows, Linux dan Mac OS X
Tentunya ada solusi lain untuk masalah umum ini.
sumber
Jawaban:
Saya ragu apakah
otherwise transcribing it will be too difficult
akan menjadi masalah.Katakanlah Anda memiliki Merah, Hijau, Biru dan Hitam. Anda dapat menulis skrip yang mengubah data Anda menjadi kumpulan huruf dari
RGBY
, misalnya:RGBYGBRYBGBYRYYBYBRYYG
(atau bahkanRed Green Blue Black Green Blue Red Black...
dalam lembar Excel) dan kembali lagi. Ini hanya masalah basis mengkonversi data biner Anda dari basis 2 (atau data heksadesimal dari basis 16) ke basis dalam jumlah warna yang Anda ambil (4 dalam contoh ini).Sekarang, pendekatan yang paling logis adalah mendapatkan 16 warna. Dengan cara ini, Anda harus menggunakan 4 kali lebih sedikit titik yang membuat pergantian antar pena sepadan. Ini memungkinkan Anda untuk menulis data sebanyak 4 kali lebih banyak di atas kertas jika Anda perlu, atau mungkin memiliki 4 kali lebih akurat saat meletakkan titik-titik Anda, penskalaan terserah Anda. Saya akan sangat menyarankan untuk tidak menggambar setiap bit.
Misalnya,
5565 bytes
harus dikalikan dua untuk mendapatkan jumlah heksadesimal yang11130 hexadecimals
(sebagai lawan dari44520 bits
) yang dapat dimasukkan ke dalam106 x 106
kotak.Bergantung pada jenis data Anda mungkin dapat datang dengan beberapa optimasi ...
Petunjuk: Cobalah untuk memilih warna yang paling berbeda (paling kontras) ...
Alternatif yang dapat menggunakan satu pena:
Mewakili hexadecimals yang berbeda dengan simbol yang berbeda
-
,/
,|
,\
,+
, ...Mewakili heksadesimal yang berbeda dengan font piksel kecil, lihat avatar saya.
Ini membuatnya bahkan berguna untuk menggunakan sesuatu seperti Basis 32 (atau Basis 36). Perhatikan bahwa
Q
dan9
sama, sehingga Anda ingin piksel kanan atasQ
menjadi Putih untuk perbedaan yang jelas. Basis 32 hanya membutuhkan53 x 53
kisi untuk contoh Anda, ditambah sedikit jarak untuk membedakan antara huruf.sumber
Jika Anda ingin orang dapat membaca dan menulis data, masalah dengan Base64 dan banyak penyandian teks adalah mereka menggunakan karakter seperti I, l, 1, |, /, 0, O, o, dan seterusnya sehingga orang bingung satu sama lain.
Menyelidiki pengkodean Base32 Douglas Crockford . Alfabetnya secara khusus dipilih untuk menghindari karakter yang serupa, dan itu termasuk deteksi kesalahan.
sumber
Setelah membaca komentar Anda, itu terdengar lebih masuk akal. Saya hanya tidak yakin apakah Anda bermaksud menyandikan megabita data seperti ini.
Saya akan merekomendasikan, di sepanjang saran Oliver, bahwa Anda meningkatkan kepadatan data Anda dengan meminjam halaman dari cipher Bacon , yang geng penjara sering gunakan untuk menyandikan pesan tersembunyi dalam missives yang ditulis dalam 2 gaya skrip yang berbeda - biasanya baik atas vs. huruf kecil atau cetak vs. karakter kursif, mis
Namun, karena tujuan Anda bukan stegnografi, Anda cukup menggunakan ini untuk memperluas set mesin terbang Anda. Melakukan ini, Anda bisa memiliki hingga 114 mesin terbang hanya menggunakan karakter alfanumerik cetak & kursif, atau 12996 poin kode menggunakan pengkodean karakter ganda.
Namun, karena semua jumlah glyph lebih besar dari 15 dan kurang dari 256 pada dasarnya sama untuk cipher data biner lurus (artinya, Anda masih akan membutuhkan 2 karakter untuk mewakili setiap byte, memberikan Anda kepadatan data 4 bit per karakter dalam semua kasus), Anda dapat menggunakan poin kode 98 glyphs / 12740 tambahan untuk deteksi / koreksi kesalahan.
Cara untuk melakukan ini termasuk:
Buat 50 set mesin terbang 16-karakter yang berbeda. Anda kemudian dapat menggunakannya untuk menulis sandi data koreksi kesalahan.
Misalnya
{set 1}{set 1}
berarti 3 camilan berikutnya sama0x000
,{set 1}{set 2}
sama dengan0x001
, dll.Anda dapat menggunakan ini untuk mewakili 2500+ dari 4096 nilai 1,5 byte yang mungkin. Demikian pula, Anda bisa menggunakan hanya 16 set untuk mewakili semua nilai byte berikut, memberi Anda 100% redundansi tanpa meningkatkan panjang data Anda yang disandikan.
Atau, Anda dapat menggunakan mesin terbang tambahan untuk kompresi tambahan:
Ab
=aba
;aB
=abab
;AB
=ababab
...Untuk lebih mengurangi kesalahan penyalinan, saya akan menampilkan konten yang disandikan dalam garis kisi dan menyalin ke kertas grafik. Jika Anda dapat menggunakan alat tulis khusus yang memiliki warna kolom / baris bergantian atau kisi kotak-kotak bergaya catur dengan kolom berhuruf & baris bernomor untuk pencarian cepat, yang selanjutnya akan meningkatkan akurasi penyalinan.
Anda juga dapat menggabungkan tata letak grid bergantian dengan gaya karakter bergantian sebagai bentuk mudah deteksi kesalahan. Yaitu jika kolom aneh selalu dikapitalisasi, jika transcriber menemukan diri mereka menulis huruf kecil dalam kolom aneh, maka mereka tahu mereka telah membuat kesalahan dan dapat mulai melacak kembali untuk melihat di mana itu terjadi.
Padahal jika prioritas utama Anda adalah akurasi, saya akan menggunakan kode biner + Hamming . Dengan menggunakan kode Hamming (12, 8) yang disingkat pada kertas grafik standar, Anda mungkin hanya memuat 187 byte, hanya mengkodekan 124 byte data. Tapi itu bisa ditranskripsi sangat cepat (garis miring untuk 1, tidak ada untuk 0) dan memberikan koreksi kesalahan tunggal. Mengolah bit paritas ekstra (13, 8) akan memberikan SECDED (koreksi kesalahan tunggal, deteksi kesalahan ganda). Menggunakan kode hamming standar seperti (15, 11) atau (31, 26), Anda mendapatkan efisiensi yang lebih baik dengan data masing-masing 137 dan 156 byte per lembar. Bahkan tingkat kode yang lebih tinggi dapat dicapai, tergantung pada seberapa akurat Anda menurut pelanggan Anda.
Pengkodean biner juga akan lebih mudah dibaca (keras) dan OCR / OMR.
sumber
alt
+a
untuk kursif "a").Kami biasa menggunakan S-Records untuk tujuan ini. Ada checksum sederhana, per baris, untuk deteksi kesalahan. Biasanya semua kecuali baris terakhir adalah panjang tetap, jadi penanda garis akhir berfungsi sebagai cek untuk penyisipan dan penghapusan. Tidak ada pemeriksaan untuk garis yang hilang. Untuk ini, kita cukup menghitung jumlah garis. Sebagian besar file pendek, kurang dari 100 baris, tapi saya ingat setidaknya satu yang memiliki 300 baris atau lebih. Itu sangat membosankan file mengetik ke dalam sistem. Tentu saja, di antara program pertama yang ditransfer dengan cara ini adalah pengunduh;)
sumber
Optical Mark Recognition telah digunakan selama beberapa dekade untuk membuat formulir tulisan tangan yang dapat dibaca mesin. Halaman Wikipedia memiliki tautan ke beberapa versi Open Source.
Sekolah telah lama menggunakan OMR untuk pengujian; formulirnya mudah digunakan dan dibaca, dan akurasi biasanya lebih baik daripada input keyboard. Untuk akurasi yang lebih tinggi, produsen komersial seperti Scantron dan ReMark dapat membuat formulir kustom.
sumber