유머천국 코하비닷컴
https://cohabe.com/sisa/182862

전직 자동개표기 개발자가 더 플랜을 보고 쓴 글

클리앙에서 퍼온 자동개표기 전직 개발자(01년)의 글입니다.

글이 길어서 요약을 원하시는분을 위하여 글을 정리하자면

1. 선관위의 요구사항 : 제대로 된 표가 미분류로 가는건 상관 없음.(단 적을수록 가산) 대신, 혼표가 한표라도 나오면 탈락. 경쟁 BMT가 아닌 검증 BMT에서 수십만장을 돌려서 혼표가 한장이라도 나오면 탈락

2. 전자개표기의 시스템 : 개표기에서 스캔->PC로 전송->PC에서 인식->기계로 결과 전송

3. 개발 당시(01년) I/O(컴퓨터장비간 전송 대역폭)이 작고, CPU의 한계로 빠른 분류가 불가 -> 더 플랜에 보듯 종이를 일부러 구불구불한 루트로 움직이게 해서 시간을 범

4. 그래도 인식이 안 되는 경우가 있었는데, 이 경우 인식될 때까지 종이를 멈춰놓으면 기계가 종이를 씹어버려 멈춰버리는 경우 발생 -> 선관위의 요구사항의 꼼수를 이용하여, 기계가 종이를 읽고 분류표로 보내기 직전까지 인식이 불가할 경우 무효표쪽으로 보내버리게 설계

5. 결론 : (1) 기계는 컴퓨터에서 반응이 없을 경우(처리를 못했을 경우) 정상표라도 무효표 쪽으로 보내는 로직이 존재했었음. 근데 컴퓨터 프로세싱 능력이 10배이상 발전하였음에도 불구하고 무효표로 보내는게 비슷하더라. (2) 01년도에도 BMT에서 혼표가 한장이라도 나오면 탈락이었는데 10년이 지난 지금 혼표가 나오는건 말도 안된다.


입니다.


BMT란 BenchMark Test로서, 기계나 프로그램이 발주사에 알맞는지, 성능은 어떠한지 하는 테스트를 의미합니다.



------------------------------------------------------------

그동안 자동개표기 부정선거 논란이 많았음에도 자동개표기에 부정이 개입되면 쉽게 탄로나기 때문에 말도 안된다고 생각했던 올해로 막 17년차가 되려는 개발자입니다.

 

원래 자동개표기의 원류가 되는 장비는 은행에서 수표분류기로 사용되던 장비입니다.

수표의 마그네틱 정보를 인식하여 같은 금액이나 종류의 수표를 스택에 쌓아서 분류하는데 마그네틱 부분이 훼손되어 있을 때는 인식을 할 수 없으므로 이 장비를 PC의 키보드 단자(PS/2)에 연결하여 장비의 스케너 부분을 통과할 때 수표 사진을 찍어서 PC로 전송하여 사진을 OCR 인식하여 일련번호같은 것으로 분류한 후 해당 스택에 수표를 보내도록 명령을 내리고 DB에 입력하는 OCR 보정 방식을 적용하기 시작하던 때였습니다.

 

당시 제가 근무하던 업체는 이러한 장비업체들에게 OCR 소프트웨어를 공급했었는데, 선관위에서 자동개표기를 도입하려 업체를 선정하려고 하니 Benchmark Test에 참가하라는 연락을 받았습니다.

 

저는 자동개표기 제어 모듈 및 데모 프로그램 담당이라 사장님과 함께 부랴부랴 과천으로 향했구요.

 

저는 그당시 BMT에 참가하는 장비 업체들 중 한틀시스템즈와 윤익C&C(이후 몇년 뒤 망했음)와 수표분류기 운용프로그램을 개발해봤었고요. 선관위 BMT 때에는 윤익C&C와 파트너 형식으로 BMT에 참여하게 됩니다.

한틀시스템즈는 제가 근무하던 업체의 라이벌 S/W업체와 파트너형식으로 참여했구요.

(며칠전에 저녁사주셨던 한틀 개발부서 과장님이랑 마주치지 않으려고 다른방에 숨어서 작업했었습니다. ㅎㅎㅎ 왜 그리 순진했었는지... 그래봤자 흡연실서 다 걸리는데...)

 

선관위의 요구사항은

 

1. 투표용지가 맞는지 인식해야 함.

2. 투표용지이 찍힌 도장의 원 안쪽 꺽인선의 각도를 360도 어느각도로 회전시켜도 정확하게 맞아떨어지는 인식해야 하며 원의 크기와 후보자 칸의 비율이 맞아야 함

3. 실제 다른선거에 사용되었던 기표용지들을 약 수천표(정확히는 기억이 안납니다) 정도 돌려서 후보 A 스택에게 쌓여야할 표가 다른 후보자 스택에 하나라도 쌓이면 절대 안됨 (바로 탈락)

4. 기표 규격이 완벽하게 후보 A 스택에게 가야할 표가 무효표 스택으로 가는 경우는 일어날 수 있지만 이 경우가 가장 적은 업체에게 가산점 부여

5. 기표용지에 찍힌 도장의 선이 일정 값 이상의 선명도를 가지는 클린한 선이여야 하며 번져있으면 무효로 인식하여야 함

6. 미세하게라도 후보자 칸에 도장의 원이 걸친 경우 무효표 스택으로 가야하며 수개표로 A 후보 표라고 판명날 표라고 할지라도 A 후보 스택으로 가면 안됨

 

정도였습니다. 물론 더 있는데 BMT에서는 일단 이정도만 보더군요.

 

당시 장비에서 투표용지를 스캔하여 PC에서 이미지 파일을 OCR로 인식한 후 장비의 해당 스택에 보내라는 명령을 내리는 운영 프로그램을 돌리는데, 윈도ME는 안정성이 똥이었고 윈도2000에서는 PC에 PS/2 포트로 연결한 장비가 키보드로 I/O 통신을 할 수 없던 환경이라 윈도98외에는 대안이 없었습니다. (윈도 98도 안정성은 ME보다는 약간 나을 뿐이지 거의 똥입니다.)

 

"섞인 투표용지 스택에서 투표용지가 벨트를 타고 출발 -> 스캐너 통과 -> PC에 이미지 전송 -> OCR 모듈로 위에 언급한 선관위 규칙 검사 후 어느후보 표인지 인식 -> 해당 스택으로 보내라고 명령하는 프로세스"가 스택 도달 라인전에 이루어지지 않으면 투표용지가 벨트에 묶여서 서게 됩니다.

그 당시 PC 최고 사양이 1G 정도의 프로세스였지만 이미지 처리로 하드 디스크 스왑이 일어나서 I/O 작업이 느려지면 이 타이밍을 맞추지 못해 장비가 서거나 장비의 데이터를 받지 못해 블루스크린 뜨는걸 해결하는 것이 가장 어려웠었습니다.

 

선관위의 가이드라인은 1분에 200매 정도 분류하는 거였고 OCR 모듈에서 어느후보에게 가야하는 표인지 인식하는데 걸리는 시간을 최대한 벌려면 스캐너에서 투표용지를 찍은 이미지를 PC로 전송하는 데 걸리는 시간을 단축하고 또 투표용지가 지나가는 라인을 최대한 구불구불하게 만들어서 스택 도달 마지노선까지 시간을 버는 방법이 최선이었습니다.

 

한 일주일 과천과 윤익C&C의 이천공장을 오가는 노숙 생활을 겪었지만 윤익C&C 장비는 꼼수로 장비를 부스트업하여 한계치인 1분에 200매 분류 속도를 냈지만 휴유증으로 벨트 속도가 안정적이지 않아서 투표용지를 씹어먹는 버그를 해결하지 못해 이를 안정적으로 시연한 한틀시스템이 선정되게 됩니다.

덕분에 윤익C&C와 파트너로 들어갔던 우리회사도 동반 탈락하게 되어 노숙생활의 마침표를 찍을 수 있어 너무 기뻤습니다. 

 

여기서부터가 제가 눈여겨 보는 점입니다.

이 시스템 자체의 BMT를 빡세게 굴려봤기 때문에 부정이 개입하기 힘들고 부정이 개입되면 금방 탄로날 수 있다라게 제 생각이었었는데 더플랜을 보고 나니 K값 1.5보다 저를 주목시킨 하나의 수치가 있습니다.

 

무효표 스택으로 가는 표의 통계인데, 2001년도 당시에는 벨트에 용지가 묶이는 사태를 피하기 위하여 스택 도달전 타이밍을 맞추지 못할 경우에는 아예 OCR 모듈 돌리는 것을 포기하고 무효표 스택으로 보내서 타이밍을 맞춥니다.

이 경우는 위의 선관위 요구사항에서 4번이 되는 셈인데요. 이 비율이 그때나 더플랜에 나온 거나 비슷하다는 거죠.

 

현재 자동개표기의 최대속도는 분당 350매, 노트북에 꽂힌 단자는 USB입니다.

2001년과 지금, OCR을 돌리는 PC의 프로세스 및 I/O 속도는 10배 이상 빨라졌고 데이터 전송은 키보드용 PS/2에서 USB로 바뀌어 계산도 안될 정도의 향상된 전송폭을 가집니다. 그런데 장비는 분당 200매에서 350매 처리로 2배도 빨라지지 않았습니다.

그 때보다 처리속도 및 OCR 인식률도 더 향상되었으니 2001년보다 당연히 무효표 비율이 줄어야죠.

 

즉 위의 선관위 요구사항 4번에 해당되는 무효표 비율이엄청나게 줄어야함에도 불구하고 2001년과 지금이 거의 비슷하다는 부분이 전혀 이해가 되지 않는 대목입니다.

 

OCR이 PC를 거치지 않고 장비에서 돈다고 해도 마찬가지입니다.

이 경우 타이밍을 맞추지 못하는 경우의 수는 더 줄어야하기 때문입니다.

 

그리고 하나 더 중요한 사실 !!!

혼표가 나온다는 건 일어나서는 안될 일입니다. 

위 선관위 요구 사항 3번인데요. 업체가 선정되고 난 뒤라도 실제 투표용지를 수십만표를 BMT 하여 한장이라도 나오면 계약을 엎을정도로 선관위에서 강력하게 요구한 사항이었기 때문에 18대 대선에서 자동개표기에서 혼표 문제가 발생했다는 게 이해가 되질 않습니다.

 

기억을 더듬어 쓴 글이라 수치가 모두 정확하지 않을 수는 있습니다만... 개인적으로 하도 고생을 한 프로젝트여서 대략적인 기억은 다 맞을거라고 생각합니다.

 

PS:

댓글을 보니 제가 본글에서 썼던 무효표 스택이라는 용어가 오해를 불러올 수 있습니다.

따라서 본글의 무효표 스택을 모두 미분류 스택으로 읽어주셔야 합니다. ㅜㅜ

댓글
  • 아놔키스트 2017/04/15 19:33

    그렇군요  부정개표 정황이 더 확실해지네요

    (xQ7UBC)

  • 코볼 2017/04/15 19:36

    전직 개발자 얘기 들어볼 것도 없이 "더플랜" 영화에서도 3%가 넘어가는 미분류 수치는 분명 비정상이라는 해외 전문가들의 언급이 나옵니다.
    원래는 1% 이하로 나온다고 함.

    (xQ7UBC)

  • 19층식충이 2017/04/15 19:42

    보통 시험답안 작성하는 OMR 카드도 정확도가 100% 여야 하지 않나요? 그걸 컴퓨터가 정확하게 읽었는지 사람이 따로 확인하지는 않으니까요.
    그 쪼끄만 답안지 표기도 오류없이 읽어내는데, 그 큰 종이에 그것도 싸인펜 칠이 아니고 도장으로 찍은걸 잘못 읽어서 혼표가 들어간다는게 상식적으로 말이 안되죠.

    (xQ7UBC)

  • 개사자들 2017/04/15 21:17

    지금까지 살면서   ATM기기에서  현금 인출할 때   10만원 눌렀는데  단한번도 11만원이 나온 적이 없었다.

    (xQ7UBC)

  • MuongThanh 2017/04/15 21:22

    읽었지만 이해는 반도 안되네요.
    중요한건 기계가 어쨌다 보다는 K=1.5가 나왔고 이에 대한 가설 중 하나로 기계 해킹하는 거였으니 영화에서 보여준 가설 하나에 집착하기 보다는 K값에 대해 집중하는게 좋을 듯 하네요.
    기계야 뭐 어찌됐든 핑계거리 만들게 뻔하니까요.

    (xQ7UBC)

  • 메르엠 2017/04/15 21:23

    혼표 무지 많이 나오더만..

    (xQ7UBC)

  • AsILayDying 2017/04/15 21:32

    독일처럼 수개표 먼저해야될 이유가 확실해지네요.

    (xQ7UBC)

  • 나찌라이 2017/04/15 21:34

    선관위. 너 누구냐

    (xQ7UBC)

  • 냥군 2017/04/15 21:34

    그냥 다 필요없고 현장에서 수개표로 다 분류해버렸으면....

    (xQ7UBC)

  • ▶◀알로스 2017/04/15 21:35

    오류가 3%나 나는건 기계를 폐기해야됩니다 ㄷㄷㄷ

    (xQ7UBC)

  • 존쓰노우 2017/04/15 21:42

    더플랜의 1.5의수학적답
    절대 조작이아니면나올일이없는 값이죠
    더플랜안보신분들 꼭보세요 진짜 다큐인데 처음부터끝까지 대사못들으면 뒤로감아서 다시들을정도로 재미있습니다

    (xQ7UBC)

  • 짹째기 2017/04/15 21:58

    선거(자기에게 유리하게)관리위원회

    (xQ7UBC)

  • 은하수달토끼 2017/04/15 22:03

    완벽하지 않아도 괜찮은 인공지능에서조차 오류 3%가 나오면 재조정에 들어갑니다.
    근데 100%의 정확도를 요구하는 시스템에서 오류가 있어요?

    (xQ7UBC)

  • sunwood0 2017/04/15 22:03

    은행의 단순 개수기, 지급기조차 오류가 없는 시대에 말이죠

    (xQ7UBC)

(xQ7UBC)