오류를 수정하여 펜과 종이로 파일을 전송하는 방법


22

펜과 종이 만 사용하여 파일을 전송하는 방법을 찾고 있습니다.

이것은 내가 찾고있는 밀도가 훨씬 낮고 프린터 나 스캐너를 사용하고 싶지 않다는 점을 제외하면 paperbak 와 다소 유사 합니다.

분명히 첫 번째 대답은 Base64 인코딩입니다. 그러나 이러한 많은 수의 문자를 쓰고 읽으면 오류가 발생합니다. 내 목적을 위해 모든 오류는 허용되지 않습니다.

두 번째 답변은 리드 솔로몬 오류 수정 코드 일 수 있습니다 (예 : rsbep 사용 ). 그러나 Reed-Solomon 코드는 삽입 / 삭제 오류를 수정하지 않으므로이 경우 대체 오류보다 가능성이 높기 때문에 문제이기도합니다.

삽입 / 삭제 인식 오류 수정 코드를 사용하여 임의의 파일을 인코딩 / 디코딩하는 프로그램이 있습니까? 바람직하게는 Windows, Linux 및 Mac OS X에서 작동해야합니다.

분명히 일반적인 문제에 대한 다른 해결책은 환영합니다.


글쓰기 또는 읽기 오류가 예상됩니까?
Christian Mann

나는 두 가지 모두에 오류가있을 것으로 예상하지만, 그에 상응하는 오류도 기대할 것이다 ...
Jeremy Salwen

미안 나는 당신이 인쇄하고 있다고 생각했습니다. 직접 작성하고 싶습니까?
Christian Mann

3
몇 가지 펜을 사용할 수 있습니까? :)
Der Hochstapler

1
단 하나의 컬러 펜만 사용하면 전사하기가 너무 어려워집니다. 실제로 압축, 서명, 암호화 된 텍스트를 전송하므로 중복 률이 50 %라고 가정하면 총 텍스트 쓰기 량은 원래 텍스트를 실제로 쓰는 것보다 <1.5 배가됩니다 (압축을 고려하면 한 번) ). 그러나 임의의 문자를 복사하는 것이 영어 텍스트를 복사하는 것보다 어렵다는 문제가 있습니다. 따라서 귀하의 질문에 대답하려면 확실히 몇 KB 범위에서만하십시오.
Jeremy Salwen

답변:


4

otherwise transcribing it will be too difficult문제가 될지 의심됩니다 .

빨강, 초록, 파랑 ​​및 검정이 있다고 가정 해 봅시다. 데이터를 RGBY. RGBYGBRYBGBYRYYBYBRYYG(또는 Red Green Blue Black Green Blue Red Black...Excel 시트) 등 의 문자 모음으로 바꾸고 다시 되 돌리는 스크립트를 작성할 수 있습니다 . 이진 데이터를 기본 2 (또는 기본 16의 16 진 데이터)에서 사용자가 사용하는 색상의 양 (이 예에서는 4)으로 기본으로 변환하면됩니다.

이제 가장 논리적 인 접근 방식은 16 가지 색상을 얻는 것입니다. 이 방법으로 4 배 적은 도트 를 사용해야 하므로 가치있는 펜간에 전환 할 수 있습니다. 따라서 필요한 경우 종이에 4 배 많은 데이터를 쓸 수 있으며, 도트를 넣을 때 정확도가 4 배나 낮을 수 있습니다. 나는 모든 단일 비트를 그리는 것에 대해 정말로 조언 할 것입니다.

예를 들어, 5565 bytes인 16 진 양을 얻기 위해 두 곱되어야 할 것이다 11130 hexadecimals(반대 44520 bits에 넣을 수) 106 x 106격자.

데이터 유형에 따라 일부 최적화가 제공 될 수 있습니다 ...

힌트 : 가장 뚜렷한 (가장 대조적 인) 색상을 선택하십시오 ...

단일 펜을 사용할 수있는 대안 :

  • 다른 기호로 다른 헥사 값을 나타내는 -, /, |, \, +, ...

  • 작은 픽셀 글꼴로 다른 16 진수를 나타냅니다. 내 아바타를 참조하십시오.

    이렇게하면 Base 32 (또는 Base 36)와 같은 것을 사용하는 것이 유용합니다. 참고 그 Q9당신은 오른쪽 상단 픽셀이 원하는 것, 그래서 동일 Q명확한 구분을 위해 화이트로. Base 32는 53 x 53예제를위한 그리드와 글자 사이를 구분하기위한 작은 간격 만 필요합니다 .


글쎄, 이것에는 몇 가지 문제가 있습니다. 1. 나는 색맹입니다. 2. 많은 펜을 구입해야합니다. 3. 오류 수정에 전혀 도움이되지 않습니다. 4. 인간이 더 나쁘게하는 텍스트 대신 코드를 작성하는 것이 포함됩니다.
Jeremy Salwen

@ JeeremySalwen : 음, 격자에 문자를 쓰는 것은 실제로 어렵지 않습니다. 그리고 추가적인 세로 점검 번호 나 CRC를 작성하여 오류를 수정할 수 있습니다. 그러나 실제로 그리드에서 그리드로 글자를 쓰는 것은 매우 쉽습니다. 최악의 경우 다시 확인하기 위해 다시갑니다.
Tamara Wijsman

1
@ JeeremySalwen : 그리고 당신이 색맹이라면, 당신은 색맹 인 색을 취하지 않습니다.
Tamara Wijsman

1
색맹은 특정 색을 볼 수없는 선택적인 것보다 색 공간의 차원 축소에 가깝습니다. 내 말은, 아마 블랙, 블루, 옐로우, 레드, 그린, 그레이를
빼낼 수

@Tom 혼란을 방지하기 위해 아마 오래된 아바타를 넣어야합니다 :)
Nate Koppenhaver

2

사람들이 데이터를 읽고 쓸 수있게하려면 Base64 및 많은 텍스트 인코딩의 문제점은 사람들이 혼란스럽게하는 I, l, 1, |, /, 0, O, o 등과 같은 문자를 사용한다는 것입니다. 서로 서로 함께.

Douglas Crockford의 Base32 인코딩을 조사하십시오 . 알파벳은 비슷한 문자를 피하기 위해 특별히 선택되었으며 오류 감지 기능이 포함되어 있습니다.


고마워, 아마 이것을 사용할 것입니다,하지만 여전히 오류 수정 문제를 해결하지 못합니다.
Jeremy Salwen

@Jeremy, Crockford의 구현에는 오류 감지가 포함됩니다 . 오류를 정정해야하는 경우 정방향 오류 정정 ( en.wikipedia.org/wiki/Forward_error_correction )을 조사하십시오 .
Dour High Arch

1

귀하의 의견을 읽은 후에는 더 합리적입니다. 나는 당신이 이와 같은 메가 바이트의 데이터를 인코딩 할 것인지 확신하지 못했습니다.

Oliver의 제안에 따라 베이컨의 암호 에서 페이지를 빌려 데이터 밀도를 높이는 것이 좋습니다. 감옥 갱은 종종 숨겨진 메시지를 두 가지 다른 스크립트 스타일로 작성된 미사에 숨겨진 메시지를 인코딩하는 데 사용합니다. 소문자 또는 인쇄 대 필기체 문자 (예 :

Hey mOM, WHAT's FOR diNNeR TODAY? = ABBBA AAAAA BAAAB BAABA AAAAA
                                  =   P     A     S     T     A

그러나 목표는 청진이 아니기 때문에이를 사용하여 글리프 세트를 확장 할 수 있습니다. 이렇게하면 인쇄 및 필기체 영숫자를 사용하여 최대 114 개의 글리프를 만들거나 이중 문자 인코딩을 사용하여 12996 개의 코드 포인트를 만들 수 있습니다.

그러나 15보다 크고 256보다 작은 모든 글리프 수는 이진 데이터의 직선 암호에 대해 본질적으로 동일하기 때문에 각 바이트를 나타내는 데 여전히 2 개의 문자가 필요하므로 문자 당 4 비트의 데이터 밀도를 제공합니다. 오류 감지 / 수정을 위해 여분의 98 글리프 / 12740 코드 포인트를 사용할 수 있습니다.

이를 수행하는 방법은 다음과 같습니다.

  • 가장 읽기 쉽고 쓰기 쉬운 256 개의 문자 콤보 세트를 선택하십시오. 다른 문자 콤보가 발생하면 복사 오류임을 알 수 있습니다.
  • 끝 문자의 두 가지 버전을 패리티 비트로 사용하십시오.
  • 50 가지 16 문자 글리프 세트를 만듭니다. 그런 다음이를 사용하여 오류 수정 데이터를 암호화합니다.

    예를 들어 {set 1}{set 1}다음 3 개의 니블이 같 0x000거나 {set 1}{set 2}같음을 의미합니다 0x001.

    이를 사용하여 4096 가능한 1.5 바이트 값 중 2500+를 나타낼 수 있습니다. 마찬가지로 16 바이트 세트 만 사용하여 다음 바이트의 모든 값을 나타낼 수 있으므로 인코딩 된 데이터 길이를 늘리지 않고도 100 % 중복성을 제공 할 수 있습니다.

또는 추가 압축을 위해 추가 글리프를 사용할 수 있습니다.

  • 98 개의 단일 문자 코드 포인트를 선택하여 가변 너비 인코딩을 구현하십시오. 이는 평균 인코딩 된 콘텐츠 크기를 약 20 % 줄입니다.
  • 반복되는 니블 / 바이트를 나타 내기 위해 다른 글리프 세트 또는 글리프 세트 조합을 사용하여 실행 길이 인코딩과 유사한 것을 구현하십시오. 예 Ab= aba; aB= abab; AB= ababab...
  • 추가 글리프 또는 코드 포인트를 사용하여 데이터에서 반복되는 "단어"및 "문구"를 나타냅니다. 사전 압축 된 데이터는 높은 수준의 엔트로피를 가질 수 있지만 이것이 얼마나 효과적인지 모르겠습니다.


복사 오류를 더욱 줄이기 위해 인코딩 된 내용을 눈금 선으로 표시하고 그래프 용지에 복사합니다. 빠른 열람을 위해 열 / 행 색상이 번갈아있는 사용자 지정 문구 나 문자 열과 번호가 지정된 행이있는 체스 판 스타일 체크 무늬 격자를 사용할 수 있으면 복사 정확도가 더욱 높아집니다.

교대 그리드 레이아웃을 교대 문자 스타일과 결합하여 오류를 쉽게 감지 할 수 있습니다. 즉, 홀수 열이 항상 대문자 인 경우, 전사자가 홀수 열에 소문자를 쓰면 오류가 발생한 것을 알고 추적을 시작하여 어디에서 발생했는지 확인할 수 있습니다.


귀하의 주요 우선 순위가 정확성이라면 바이너리 인코딩 + 해밍 코드를 사용 합니다. 표준 그래프 용지에 (12, 8) 단축 Hamming 코드를 사용하면 124 바이트의 데이터 만 인코딩하여 187 바이트에 맞을 수 있습니다. 그러나 매우 빠르게 (1의 경우 슬래시, 0의 경우 없음) 기록 할 수 있으며 단일 오류 수정 기능을 제공합니다. 여분의 패리티 비트 (13, 8)를 택하면 SECDED (단일 오류 수정, 이중 오류 감지)가 제공됩니다. (15, 11) 또는 (31, 26)과 같은 표준 해밍 코드를 사용하면 시트 당 각각 137 바이트 및 156 바이트의 데이터로 더 나은 효율성을 얻을 수 있습니다. 전사자가 얼마나 정확한지에 따라 더 높은 코드 속도를 달성 할 수 있습니다.

이진 인코딩은 읽기 쉽고 (소리 내) OCR / OMR이 더 쉽습니다.


분명히 대문자를 사용할 계획입니다. 제안한 모든 오류 수정 체계 중에서 사용자 정의 파일 형식 등을 설계하지 않고 구현할 수있는 방법이 보이지 않습니다. 파일에 오류 수정 보호를 적용하기위한 선례가 실제로 있습니까? 아마도 사용자 정의 프로그램을 만드는 것도 바람직하지 않다고 언급했을 것입니다. 오류 수정 코드로 파일을 보호하는 프로그램을 찾지 못하는 것 같습니다.
Jeremy Salwen

필자의 요점은 대문자 만 사용하는 것이 아니라 다른 스크립트 / 글꼴을 사용하는 것입니다. 대문자 및 소문자 영숫자 만 사용하는 경우 62 개의 글리프 또는 3844 개의 코드 포인트 만 있습니다. 2 개의 스크립트를 사용하여 전송에 사용되는 저장 매체를 활용하여 코드 포인트를 3 배 이상 늘릴 수 있습니다. 이것은 제 대답의 목적이었습니다. 이것이 기록 매체라는 사실을 이용하고 싶지 않다면, 오류 인코딩을 구현하는 많은 파일 형식이 있습니다. 대부분의 아카이브 / 압축 형식에는 오류 수정 기능이 내장되어 있습니다.
Lèse majesté

그래도 새 파일 형식을 만들어서 무슨 의미인지 잘 모르겠습니다. 내가 언급 한 모든 기술은 임의의 이진 데이터를 필기 텍스트 / 마크로 시각적으로 인코딩하기위한 것입니다. 당신은 그런 식으로 컴퓨터에 저장하지 않을 것입니다 (스캔 된 이미지를 저장할 수 없었습니다). 기본적으로 데이터를 인코딩하여 사용자가 복사 할 수 있도록 화면에 이미지를 출력하는 프로그램이 있습니다. 그런 다음 컴퓨터로 다시 전송하려면 OCR / OMR이 스캔 한 이미지이거나 키보드를 통해 입력을 받아들이는 디코딩 프로그램을 사용합니다 (예 : 필기체 "a"의 경우 alt+ a).
Lèse majesté

내가 겪고있는 문제는 "데이터를 인코딩하는 프로그램이있을 것"입니다. 이 작업을 수행 할 프로그램이 없으며이 작업을 수행 할 프로그램이 없습니다. 또한 다른 오류 위에 파일의 시작 부분에서 제거 된 (지우지 않은) 바이트를 정상적으로 처리 할 수있는 파일 형식을 알지 못합니다. 나는 이것이 데이터 밀도를 높이는 방법이라는 것에 동의하지만, 지금은 내 주요 관심사가 아니므로 읽기 / 쓰기 및 오류 방지가 쉽습니다.
Jeremy Salwen

@ Jeeremy : 내가 말했듯이, 대부분의 아카이브 형식에는 오류 수정 기능이 내장되어있어 대부분의 사람들에게 충분하게 작동합니다. 그러나 손으로 직접 작성하기 위해 특별히 고안된 것을 원한다면 글을 쓰거나 누군가를 위해 무언가를 쓰도록해야합니다. 그렇지 않으면 가장 좋은 방법은 고 잡음 채널을 통해 전송하도록 설계된 기존 응용 프로그램을 살펴 보는 것입니다. 데이터 밀도와 관련이없는 가장 쉬운 옵션은 높은 수준의 오류 수정 기능이있는 RAR 파일을 사용한 다음 3 중 모듈 식 중복성을 위해 헤더 섹션을 3 번 반복하는 것입니다.
Lèse majesté

1

우리는 이 목적 을 위해 S- 레코드 를 사용 했습니다 . 오류 감지를 위해 한 줄에 간단한 체크섬이있었습니다. 일반적으로 마지막 줄을 제외한 모든 줄의 길이는 고정되어 있으므로 줄 끝 마커는 삽입 및 삭제를 확인하는 역할을합니다. 그래도 누락 된 줄에 대한 검사는 없었습니다. 이를 위해 우리는 단순히 줄 수를 세었습니다. 대부분의 파일은 100 줄 미만의 짧은 파일이지만 300 줄 이상이있는 파일을 기억합니다. 시스템에 파일을 입력하는 것은 매우 지루했습니다. 물론,이 방법으로 전송 된 첫 번째 프로그램 중 하나는 다운로더였습니다.)


0

광학 마크 인식 은 수십 년 동안 기계 판독 가능 필기 양식을 작성하는 데 사용되었습니다. Wikipedia 페이지에는 여러 오픈 소스 버전에 대한 링크가 있습니다.

학교는 오랫동안 시험에 OMR을 사용해 왔습니다. 사용하기 쉽고 읽기 쉬운 형식이며 일반적으로 키보드 입력보다 정확도가 좋습니다. 정확성을 높이기 위해 Scantron 및 ReMark와 같은 상용 제조업체는 사용자 지정 양식을 만들 수 있습니다.


불행히도 흥미로운 점은 컴퓨터에 스캐너 나 다른 이미징 시스템이 연결되어 있어야한다는 것입니다.
Jeremy Salwen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.