ペンと紙だけでファイルを転送する方法を探しています。
これは paperbak にいくぶん似ていますが、探している密度がはるかに低く、プリンターやスキャナーを使用したくない点が異なります。
明らかに、最初の答えは Base64 エンコーディングです。しかし、このように多数の文字を読み書きすると、エラーが発生することになります。私の目的では、エラーは許容できません。
2番目の答えは リードソロモンエラー訂正コード (たとえば、 rsbep を使用)です。ただし、これも問題です。私の理解では、リードソロモンコードは挿入/削除エラーを修正しないためです。この場合、置換エラーよりも可能性が高くなります。
挿入/削除を意識したエラー訂正コードで任意のファイルをエンコード/デコードするプログラムはありますか?できれば、Windows、Linux、Mac OSXで動作するはずです
明らかに、一般的な問題に対する他の解決策は大歓迎です。
otherwise transcribing it will be too difficult
が問題になるかどうかは疑問です。
赤、緑、青、黒があるとしましょう。データをRGBY
からの文字のコレクションに変換するスクリプトを作成できます(例:RGBYGBRYBGBYRYYBYBRYYG
(またはExcelシートではRed Green Blue Black Green Blue Red Black...
))。バイナリデータを基数2から(または基数16からの16進データ)、使用する色の量(この例では4)で基数に変換するだけです。
さて、最も論理的なアプローチは、16色を自分で取得することです。このように、4分の1のドットを使用する必要があります。これにより、ペンを切り替える価値があります。これにより、必要に応じて4倍のデータを紙に書き込むことができます。または、ドットを配置するときに4倍精度が低くなる可能性がありますが、スケーリングは自由です。私は本当にすべてのビットを描くことはお勧めしません。
たとえば、5565 bytes
グリッドに配置できる11130 hexadecimals
(44520 bits
ではなく)である16進数の量を取得するには、106 x 106
に2を掛ける必要があります。 。
データの種類に応じて、おそらくいくつかの最適化を行うことができます...
ヒント:最も明確な(最も対照的な)色を選択してみてください...
1本のペンを使用できる代替案:
さまざまな16進数をさまざまな記号-
、/
、|
、\
、+
、..で表します。
さまざまな16進数を小さなピクセルフォントで表します。アバターを参照してください。
これにより、Base 32(またはBase 36)のようなものを使用することも便利になります。 Q
と9
は同じであるため、明確に区別するために、Q
の右上のピクセルを白にする必要があることに注意してください。 Base 32では、例として53 x 53
グリッドと、文字を区別するためのわずかな間隔のみが必要です。
人々がデータを読み書きできるようにしたい場合、Base64と多くのテキストエンコーディングの問題は、人々が混乱させるI、l、1、|、/、0、O、oなどの文字を使用することです。お互いに。
Douglas Crockfordの Base32 エンコーディングを調査します。そのアルファベットは、類似した文字を避けるために特別に選択されており、エラー検出が含まれています。
以前は、この目的で S-Records を使用していました。エラー検出のために、行ごとに簡単なチェックサムがありました。通常、最後の行を除くすべてが固定長であったため、行末マーカーは挿入と削除のチェックとして機能しました。ただし、行の欠落のチェックはありませんでした。このために、単に行数を数えました。ほとんどのファイルは短く、100行未満でしたが、少なくとも1つは300行以上でした。それは非常にシステムにファイルを入力するのが面倒でした。もちろん、この方法で転送された最初のプログラムの中にはダウンローダーがありました;)
光学式マーク認識 機械可読な手書きフォームを作成するために何十年も使用されてきました。ウィキペディアのページには、いくつかのオープンソースバージョンへのリンクがあります。
学校は長い間OMRをテストに使用してきました。フォームは使いやすく、読みやすく、通常、キーボード入力よりも精度が高くなります。精度を高めるために、ScantronやReMarkなどの商用メーカーはカスタムフォームを作成できます。