여기서 OCR이 작동하는 방식
스캔한 PDF에는 텍스트가 아니라 페이지 그림이 들어 있습니다. 여기서 Markdown을 얻으려면 문자 인식 모델이 그림을 한 장씩 읽어야 합니다. 대부분의 사이트에서는 파일을 서버에 올려야 하지만, 여기서는 모델이 여러분에게 옵니다.
- 변환기가 모든 페이지를 살핍니다. 이미 텍스트 층이 있는 페이지는 그대로 읽어 더 빠르고 정확합니다. 텍스트 층이 없거나, 글자에 대응하지 않는 기호로 된 텍스트 층이 있는 페이지는 OCR로 보냅니다.
- 페이지를 이미지로 그립니다. 탭 안에서, 작은 글씨도 읽을 수 있는 해상도로 그립니다.
- 검출 모델이 글줄을 찾고, 인식 모델이 한 줄씩 읽습니다. 둘 다 PaddleOCR 모델(Apache 2.0)이며 WebAssembly로 실행되고, 브라우저가 허용하면 여러 스레드를 씁니다.
- 줄을 읽는 순서대로 다시 놓습니다. 문단을 잇고, 줄 높이로 제목을 추정하고, 열이 맞는 줄은 표로 다시 짭니다. 그다음에는 다른 페이지와 똑같이 Markdown이 됩니다.
처음 스캔을 변환할 때 모델을 내려받습니다. 라틴 문자와 중국어는 약 6MB, 일본어나 한국어는 약 20MB입니다. 그 뒤로는 캐시에 남아 OCR이 바로 시작됩니다.
얼마나 빠른가요?
최신 노트북에서는 모델을 불러온 뒤 보통 페이지 하나에 2~4초가 걸립니다. 휴대폰은 더 느리고, 작은 글씨가 빽빽한 페이지는 편지보다 오래 걸립니다. 진행 줄에 어느 페이지를 읽는 중인지 나오고, 취소로 언제든 멈출 수 있습니다. 이미 읽은 페이지는 남아 있으므로 다시 시작하면 멈춘 곳부터 이어 갑니다.
일부 페이지만 스캔본이면 그 페이지만 OCR을 거칩니다. 부록 세 쪽만 스캔인 200쪽 보고서는 스캔이 없는 보고서와 거의 같은 속도로 변환됩니다.
OCR이 확신하지 못한 페이지 확인하기
인식 모델은 뛰어나지만 완벽하지는 않습니다. 모든 걸 교정하게 하는 대신, 변환기는 줄마다 모델의 신뢰도를 기록합니다. 기준선 아래로 떨어진 줄이 있는 페이지는 확인할 페이지에 "OCR이 확신하지 못한 단어 있음" 표시와 함께 나오고, 페이지 그림이 Markdown 옆에 놓여 비교할 수 있습니다.
반대 문제도 여기서 고칩니다. 텍스트 층이 망가진 PDF가 있습니다. 글꼴이 엉뚱한 글자에 대응돼 문장이 뜻을 알 수 없게 나오는 경우입니다. 그런 페이지에는 글자 깨짐 표시가 붙고, 이 페이지를 OCR로 읽기를 누르면 그 페이지만 그림에서 다시 읽습니다.
알맞은 모델 고르기
| 문서 | 스캔 페이지에서 고를 것 | 다운로드 |
|---|---|---|
| 영어, 스페인어, 프랑스어, 독일어, 포르투갈어 등 라틴 문자 언어 | 라틴 문자와 중국어 | 약 6MB |
| 중국어(간체와 번체 인쇄체) | 라틴 문자와 중국어 | 약 6MB |
| 일본어 | 일본어 | 약 21MB |
| 한국어 | 한국어 | 약 18MB |
고른 모델은 다음 방문 때도 기억됩니다. 영어가 섞인 한국어나 일본어 문서는 한국어나 일본어 모델로 읽는 편이 좋습니다. 각 모델은 라틴 문자와 숫자도 읽을 수 있습니다.
스캔 결과를 더 좋게 하려면
- 직접 스캔한다면 300dpi로 하세요. 200dpi 아래로 내려가면 작은 글씨가 다른 글자로 뭉개지기 시작합니다.
- 반듯한 페이지가 잘 읽힙니다. 비스듬히 찍은 페이지나 책 제본 쪽으로 휘어든 페이지는 가장자리 단어를 놓칠 수 있습니다.
- 믿기 어려운 텍스트 층이 있을 때는 스캔 페이지에서 모든 페이지를 고르세요. 오래된 스캐너의 OCR이 붙인 텍스트 층 같은 경우입니다. 변환기는 그것을 무시하고 모든 페이지를 직접 읽습니다.
- 휴대폰에서 긴 스캔을 변환할 때는 메모리를 아끼도록 페이지 범위를 지정하세요.
OCR이 아직 못 하는 것
- 손글씨는 지원하지 않습니다. 모델은 인쇄체로 학습되었습니다.
- 빽빽하거나 기울어진 표. 스캔한 표는 열이 뚜렷하게 정렬되어 있으면 Markdown 표가 됩니다. 열 간격이 좁거나 비스듬히 스캔된 페이지는 텍스트 줄로 나올 수 있습니다. 자세한 내용은 PDF 표를 Markdown으로에 있습니다.
- 수식은 LaTeX가 아니라 모델이 본 글자 그대로 나옵니다.
- 위 모델 밖의 언어, 예컨대 아랍어, 히브리어, 키릴 문자, 그리스어, 태국어, 힌디어는 OCR 대상이 아닙니다. 다만 텍스트 층이 있는 PDF는 OCR이 필요 없으므로 이 언어들도 변환됩니다.
브라우저 OCR은 개인정보 면에서 안전한가요?
네. 각 페이지는 이 탭 안에서 그려지고 읽히며, 텍스트는 복사하거나 내려받을 때까지 탭의 메모리에만 있습니다. 페이지의 그림도 글자도 어디로도 보내지지 않습니다. 그래서 스캔한 계약서, 진료 기록처럼 올리고 싶지 않은 서류에도 쓸 수 있습니다. 실행 중에 브라우저 개발자 도구의 네트워크 패널을 지켜봐도 파일이나 그 내용을 싣는 요청은 없습니다.
자주 묻는 질문
문서를 찍은 사진도 변환되나요?
먼저 사진을 PDF로 만드세요. 대부분의 휴대폰은 공유 메뉴에서 스캔이나 사진을 PDF로 저장할 수 있습니다. 그런 다음 PDF를 여기에 놓으면 됩니다. 이미지 파일 자체는 아직 받지 않습니다.
첫 스캔은 왜 더 오래 걸리나요?
처음 한 번 OCR 모델을 내려받기 때문입니다. 브라우저가 캐시를 지우지 않는 한, 다른 날의 스캔도 이 기다림 없이 시작합니다.
스캔본에 텍스트 층은 있는데 글자가 틀립니다. 어떻게 하나요?
그 텍스트 층은 스캐너가 돌린 OCR에서 나온 것이라 품질이 낮을 수 있습니다. 스캔 페이지에서 모든 페이지를 골라 다시 변환하거나, 이상해 보이는 페이지에서 이 페이지를 OCR로 읽기를 쓰세요.
오프라인에서도 되나요?
변환이 시작되고 모델이 캐시에 있으면 네트워크가 필요 없습니다. 중간에 연결이 끊겨도 처리는 계속됩니다.