본문 바로가기
책상 노트 책상 노트
실무자가 실제로 굴려본 업무도구·업무 자동화 기록

스캔 문서 300장 중, OCR로 제대로 읽힌 건 절반이었습니다

읽는 시간 약 10분

계약서, 등기 서류, 팩스 명세서, 도장 찍힌 확인서까지 네 개 법인을 오가며 쌓인 스캔 문서 300장이 있었습니다. OCR로 텍스트를 뽑아 파일명을 자동으로 정리하려 했지만, 그대로 믿고 파일명까지 자동 확정할 수 있었던 건 절반이 안 됐습니다. 나머지 절반을 처리하며 실제로 확인해야 했던 단계를 정리합니다.

1단계: 자동화 대상과 목표부터 확인하기

이 문서들을 스캔해둔 폴더가 있습니다. 파일명이 스캐너가 붙인 일련번호 그대로라서, 필요한 서류를 찾으려면 스캔본을 하나씩 열어봐야 하는 상태였습니다. 세무법인이 특정 계약서를 요청했을 때 그걸 찾는 데 20분 넘게 걸린 날, 정리를 결심했습니다.

계획은 단순했습니다. 전체 스캔본에 OCR을 돌려 텍스트를 뽑고, 그 텍스트에서 문서 종류와 날짜와 상대방을 읽어 파일명을 자동으로 바꾸는 것. 대상은 300장 남짓이었습니다. 막상 돌려보니 절반 넘게 사람이 봐야 했고, 그중 일부는 OCR이 오히려 틀린 확신을 주는 위험한 상태였습니다. 저는 개발자가 아니라 여러 법인의 재무를 보는 실무자라 화려한 파이프라인을 만들 능력도 생각도 없었고, 그게 오히려 목표를 낮추는 결정을 빨리 내리게 해줬습니다.

스캔 문서 300장 중 자동 확정된 분량과 서류를 찾는 데 걸리던 시간을 정리한 도해

손으로 정리하던 시절과 비교하면

OCR을 붙이기 전에는 이 정리를 손으로 하고 있었습니다. 스캔본을 하나씩 열어 제목을 눈으로 확인하고 파일명을 직접 쳐 넣는 방식입니다. 그때 재봤던 속도는 한 장에 대략 40초에서 1분 사이였습니다. 300장이면 서너 시간이 그대로 들어가는 일이었고, 실제로 밀린 스캔본을 몰아서 정리할 때는 반나절을 통째로 썼습니다.

OCR을 정답이 아니라 초안으로 쓰기로 정한 뒤의 시간과 비교하면, 확인만 하는 방식이 한 장에 10초에서 20초쯤이었으니 절반 이하로 줄어든 셈입니다.

2단계: 실패 유형부터 나누기

전체를 돌려놓고 결과를 훑어보니 실패가 몇 가지 유형으로 갈렸습니다.

유형증상원인
기울어진 스캔줄이 뒤섞여 문장이 안 됨급하게 스캔하며 문서가 비뚤게 들어감
도장, 서명 겹침상대방 이름 자리가 깨짐도장이 글자 위에 찍힌 문서
팩스 품질글자 일부가 뭉개져 다른 글자로 읽힘팩스 수신 후 재스캔한 이중 열화
표 구조숫자가 다른 행으로 붙음명세서류의 표를 줄글로 풀면서 순서가 섞임

이 중에서 진짜 문제는 네 번째와, 팩스 품질에서 나온 숫자 오인식이었습니다. 문장이 깨진 건 사람이 보면 바로 이상한 걸 알아챕니다. 그런데 숫자는 다릅니다. 0이 8로, 1이 7로, 3이 8로 읽힌 결과물은 겉보기에 멀쩡한 숫자입니다. 명세서 금액이 이렇게 바뀌면 틀렸다는 사실 자체를 알 수가 없습니다. 재무 자료에서 이건 실패가 아니라 사고입니다.

날짜에서도 같은 일이 있었습니다. 어느 확인서의 날짜가 실제와 다른 연도로 읽혔는데, 그 연도가 그럴듯한 범위 안이라 걸러지지 않았습니다. 파일명에 그 날짜가 그대로 들어갔다면, 나중에 이 문서를 연도로 검색할 때 영영 못 찾았을 겁니다.

전체 OCR 실행부터 인식률 개선 실패와 목표 하향까지의 단계 도해

3단계: 보정으로 되는 것과 안 되는 것 가려내기

실패 유형을 보고 나서 처음 한 일은 인식률을 올리는 시도였습니다. 기울어진 이미지를 보정해서 다시 돌리고, 대비를 조정해보고, 해상도를 키워서 다시 넣어봤습니다. 일부는 나아졌습니다. 기울어진 스캔은 보정하면 확실히 읽을 수 있는 상태가 됐습니다. 그런데 팩스 이중 열화와 도장 겹침은 어떤 조작을 해도 원래 없는 정보가 살아나지 않았습니다. 뭉개진 글자는 보정해도 뭉개진 글자입니다.

4단계: 수작업 비용부터 계산하기

이틀을 쓰고 나서야 계산이 이상하다는 걸 인정했습니다. 남은 문제 문서는 백오십 장 남짓인데, 한 장씩 눈으로 보고 이름을 붙이면 장당 30초, 한 시간 남짓이면 끝날 일입니다. 인식률과 씨름한 이틀은 한 시간 남짓한 일을 피하려고 쓴 시간이었습니다. 자동화 작업에서 제일 조심해야 하는 건 도구의 한계가 아니라, 수작업으로 얼마 안 걸리는 일을 자동화하겠다고 붙드는 제 고집이었습니다.

5단계: OCR 역할을 “정답”에서 “초안”으로 낮추기

여기서 목표를 낮췄습니다. 처음 목표는 “스캔본을 검색 가능한 텍스트로 만들기”였는데, 뭉개진 팩스와 도장 겹침 앞에서 그건 300장 전부에는 무리였습니다. 대신 이렇게 나눴습니다.

  • OCR에 맡긴 일: 문서 종류 판별과 후보 정보 추출입니다. 텍스트가 깨져 있어도 “계약서”, “거래명세서”, “확인서” 같은 단어와 대략의 날짜, 상대방 이름 후보는 건질 수 있는 경우가 많았습니다. 분류가 목적이면 전문이 완벽할 필요가 없습니다.
  • 사람이 한 일: 파일명 확정입니다. OCR이 제안한 문서 종류, 날짜, 상대방을 원본 이미지와 나란히 놓고 확인한 뒤 확정했습니다. 한 장에 10초에서 20초쯤 걸립니다. 300장이어도 이 확인 자체는 두어 시간 일입니다.
  • 규칙으로 정한 것: 파일명 형식입니다. 날짜, 법인 구분, 문서 종류, 상대방 순서로 통일했습니다. 형식이 통일되면 OCR 없이 파일명 검색만으로도 대부분의 요청에 대응할 수 있습니다. 날짜를 맨 앞에 둔 건 폴더에서 정렬만 해도 시간순이 되게 하려는 목적이고, 법인 구분을 두 번째에 둔 건 네 법인의 문서가 한 폴더에 섞이는 일이 실제로 있었기 때문입니다.

이렇게 바꾸고 나니 OCR의 역할이 “정답 생성”에서 “초안 제안”으로 내려왔고, 그 위치에서는 쓸 만했습니다. 사람이 300장을 백지에서 분류하는 것과, 제안된 이름을 확인만 하는 것은 체감 부담이 전혀 다릅니다.

6단계: 확인 작업은 나눠서, 무작위로 재검증하기

확인 작업은 한 번에 몰지 않고 이틀에 걸쳐 나눴습니다. 같은 형식의 문서를 수십 장씩 연달아 보면 눈이 무뎌져서, 뒤로 갈수록 제안된 이름을 별 의심 없이 통과시키게 됩니다. 실제로 첫날 후반에 확정한 몫에서 상대방 이름이 틀린 채 통과된 게 하루 뒤 재확인에서 두 건 나왔습니다. 이후로는 한 번에 백 장을 넘기지 않고, 확정한 몫 중 일부를 다음 날 무작위로 다시 보는 식으로 바꿨습니다.

7단계: 원인을 입구(스캔 단계)로 되짚기

이번 작업의 시간 배분을 돌아보면, OCR을 돌리고 결과를 다루는 시간보다 나쁜 스캔본과 씨름한 시간이 길었습니다. 그래서 다음부터는 스캔할 때 기울어짐을 바로 확인하고, 팩스로 받은 문서는 가능하면 원본 파일을 다시 요청하기로 했습니다.

그리고 하나 더, 숫자가 들어가는 문서는 OCR 결과를 어디에도 그대로 옮겨 적지 않는다는 원칙을 정했습니다. 금액과 사업자번호는 반드시 원본 이미지를 눈으로 확인합니다. OCR이 제일 위험한 순간은 못 읽었을 때가 아니라, 틀리게 읽고도 멀쩡해 보일 때였습니다.

처음 목표와 방향을 바꾼 뒤의 OCR 활용 방식을 항목별로 비교한 도해

결과: 검색 시간이 20분에서 1분 아래로 줄었습니다

정리가 끝난 폴더에서 서류를 찾는 시간은 20분에서 1분 아래로 줄었습니다. 다만 그건 OCR 덕이라기보다 파일명 규칙 덕입니다. 도구는 초안을 만들었고, 검색이 되게 만든 건 규칙과 확인이었습니다. 이 구분을 처음부터 알았으면 목표를 잘못 잡고 보낸 첫 이틀은 아꼈을 겁니다.

전문 텍스트도 버리지는 않았습니다. 품질과 무관하게 각 스캔본 옆에 같은 이름의 텍스트 파일로 남겨뒀습니다. 파일명에 안 들어간 단어로 문서를 찾아야 할 때, 깨진 전문이라도 검색에 걸리는 경우가 있기 때문입니다. 정확한 기록으로는 못 쓰지만 찾기의 실마리로는 씁니다. OCR 결과를 “믿을 수 있는가”라는 하나의 잣대로 보지 않고, 용도별로 믿는 정도를 달리하는 것. 이번 작업에서 남은 기준을 한 줄로 줄이면 그렇게 됩니다.

다른 문서에 옮기기 전에 원본 상태, 문서 수, 문서 성격부터 따집니다

이번 300장 정리가 끝난 뒤로 다른 법인의 오래된 문서함에도 같은 방식을 옮겨볼지 논의가 나왔습니다. 그때 먼저 확인하기로 한 건 문서의 원본 품질입니다. 이번 300장은 팩스와 손도장 문서가 많이 섞여 있어서 OCR 정확도가 낮았던 편인데, 만약 처음부터 컴퓨터에서 작성해서 출력한 문서라면 사정이 다를 수 있습니다. 스캔이 아니라 원본 파일이 그대로 있는 경우라면 OCR 자체가 필요 없는 경우도 있어서, 옮기기 전에 먼저 원본이 어떤 상태로 남아 있는지부터 보기로 했습니다.

문서가 몇 장인지도 중요합니다. 300장 규모에서는 사람이 두어 시간 들여 확인하는 방식이 감당됐지만, 양이 훨씬 많아지면 확인 자체가 다시 병목이 됩니다. 그 경우에는 확인 인원을 나누는 문제가 새로 생기고, 나눈 인원 간에 같은 기준으로 판단하는지를 맞추는 절차가 하나 더 필요해집니다. 세 번째는 문서의 성격입니다. 계약서처럼 오탈자 하나가 큰 문제가 되는 문서와, 단순 참고용 안내문처럼 대략만 맞으면 되는 문서는 확인 강도를 다르게 가져가도 된다고 봤습니다.

스캔 문서 OCR 정리, 바로 쓰는 체크리스트

  • 스캔할 때 기울어짐을 그 자리에서 확인합니다. 나중에 보정하는 것보다 다시 스캔하는 쪽이 빠르고 결과도 좋습니다.
  • 팩스로 받은 문서는 가능하면 원본 파일을 다시 요청합니다. 이중 열화를 겪은 문서는 어떤 도구를 써도 한계가 있습니다.
  • 도장은 서명란에 찍도록 안내합니다. 글자 위에 찍힌 도장은 그 자리 정보를 지웁니다.
  • 스캔 직후에 바로 이름을 붙입니다. 몰아서 정리하는 시간의 대부분은 스캔 당시 10초씩 쓰면 없었을 시간입니다.
  • 금액, 사업자번호 등 숫자가 들어간 항목은 OCR 결과를 그대로 옮기지 말고 반드시 원본 이미지와 대조합니다. OCR은 못 읽었을 때보다 틀리게 읽고도 멀쩡해 보일 때가 더 위험합니다.

이어서 읽을 기록

책상 노트 운영자
함께 보면 좋은 글
error: Content is protected !!