본문 바로가기

이미지를 보관하지 않는 OCR

이미지에서 텍스트, QR 코드, 바코드를 읽어 내는 도구 6가지입니다. 언어 팩은 이 사이트에서 받아 오며, 이미지는 저장되지 않습니다.

도구 6개, 회원가입 없음, 워터마크 없음

대부분은 이미지 하나에 한 가지 작업을 합니다. 사진 속 글자를 복사하려면 이미지 텍스트 추출부터 시작하세요. 화면에서 선택할 수 없는 텍스트가 필요하다면 스크린샷 OCR을, 스캔본의 모습은 그대로 두고 검색 가능하게 만들려면 PDF OCR을 쓰세요. 목록 아래 내용은 사람들이 의외라고 느끼는 부분, 즉 파일 용량보다 해상도가 중요한 이유와 브라우저가 맞지 않는 경우를 다룹니다.

QR 코드 및 바코드

도구 2개

QR 코드를 따라가기 전에 내용을 확인하고, 체크 숫자까지 검증된 바코드 번호를 얻으세요.

OCR이 실제로 하는 일과 할 수 없는 일

OCR은 모양을 인식해 문자를 돌려줄 뿐, 글을 읽지는 않습니다. 단어의 뜻을 이해하지 못하므로, “l”로 잘못 읽은 “1”도 주변의 올바른 문자들과 똑같이 확신에 찬 모습으로 나옵니다. 그래서 이 페이지들은 깔끔해 보이는 결과만 건네고 오류는 알아서 찾게 하는 대신, 인식기 자체의 신뢰도를 텍스트 옆에 보여 드립니다. 반듯하게, 초점이 맞게 찍은 선명한 인쇄 글자라면 오류는 1,000자에 몇 자 수준입니다. 반사광, 그림자, 특이한 글꼴이 있으면 훨씬 나빠질 수 있으며, 결과물은 겉보기에 전혀 다르지 않습니다.

이 페이지들 뒤에는 인식기가 두 개 있습니다. 하나는 어떤 문자 체계인지 모르는 상태에서 페이지 어디에 있든 텍스트를 찾아내고, 하나의 사전으로 50여 개 언어를 읽습니다. 다른 하나는 언어마다 따로 학습되어 첫 번째 뒤를 받치며 120개 이상 언어를 다룹니다. 언어를 자동으로 두면 첫 번째 인식기가 먼저 시도합니다. 이게 중요한 이유는 언어를 잘못 지정하는 것이 아무 결과도 얻지 못하는 전형적인 원인이기 때문입니다. 폴란드어 메뉴를 키릴 문자로 판단해 러시아어로 읽으면, 자신 있게 빈 페이지를 돌려줍니다. 언어를 직접 지정하면 그 언어의 인식기로 작업이 고정되며, 무엇을 가졌는지 정확히 알 때 원하는 방식입니다.

중요한 것은 파일 용량이 아니라 해상도입니다. 인식기는 특정한 글자 높이를 원하고, 모든 이미지는 그 높이에 맞게 조정됩니다. 스캔한 PDF의 페이지는 300 DPI로 렌더링해 읽고, 이미지는 크기가 아니라 글자 잉크 자체를 측정한 뒤 알맞게 확대하거나 축소합니다. 사람들이 가장 많이 오해하는 것이 화면 텍스트입니다. 일반 크기에서 글자는 약 10픽셀 높이로, 인식기가 원하는 높이의 3분의 1 정도입니다. 그래서 스크린샷은 읽기 전에 확대합니다. 글자가 약 8픽셀보다 작으면 확대할 디테일이 남아 있지 않으며, 어떤 처리로도 만들어 낼 수 없습니다. 반대로 메뉴판을 찍은 4,800만 화소 사진이 작고 선명한 사진보다 더 정확하지는 않습니다. 어느 선을 넘으면 픽셀이 늘어도 시간만 들고 얻는 것은 없습니다.

기울기와 고르지 않은 조명은 보이는 것보다 훨씬 큰 피해를 줍니다. 사진으로 찍은 페이지는 1~2도 기울어 있고 한쪽에서 빛을 받습니다. 그래서 이미지 텍스트 추출과 문서 스캔은 페이지 전체에서 그 각도를 측정해 바로잡고, 잉크 뒤 종이의 밝기를 구역별로 추정해 균일한 흰색으로 끌어올립니다. 이것은 겉모양을 위한 것이 아닙니다. 곧은 괘선이 있어야 표를 격자로 찾을 수 있고, 대비가 고르게 맞아야 손 그림자를 잉크로 읽지 않습니다. 스크린샷에는 두 처리 모두 일부러 하지 않습니다. 이미 반듯하고 조명도 고르므로, 사진처럼 보정하면 오류만 늘어납니다.

표와 여러 단 레이아웃은 정말로 어려운 경우이며, 수치를 알아 둘 만합니다. 괘선이 있는 양식을 페이지 전체의 줄글로 읽었더니 셀 텍스트가 다음 열로 넘어가고 레이블의 3분의 1이 빠져, 문자의 15~20%가 틀렸습니다. 괘선을 먼저 찾고 각 셀을 따로 읽자 약 5%로 줄었습니다. 그래서 괘선이 보이는 표는 격자로 찾아내 탭으로 구분된 행으로 돌려주며, 스프레드시트에 바로 붙여 넣을 수 있습니다. 여러 단으로 된 글은 페이지를 가로질러 읽지 않고 읽는 순서대로 읽습니다. 공백만으로 배치한 표는 찾을 괘선이 없으므로, 붙여 넣었을 때 제대로 나오는지는 설계가 아니라 운에 달려 있습니다.

검색 가능한 PDF와 추출한 텍스트는 다른 것입니다. PDF OCR과 문서 스캔은 이미지를 원래 그대로 두고 인식한 단어를 그 위에 보이지 않게 깔아 둡니다. 페이지는 똑같아 보이지만 Ctrl+F로 검색되고, 선택해서 복사할 수 있습니다. 페이지에 무언가를 그려 넣는 일은 없습니다. 이는 잘못 읽은 부분이 완벽해 보이는 문서 안에 숨는다는 뜻이기도 합니다. 이미지 텍스트 추출과 스크린샷 OCR은 반대입니다. 문자만 얻고, 글꼴도 색상도 굵은 서식도 이미지도 없습니다. 놓치기 쉬운 텍스트 레이어의 주의점이 하나 있습니다. 내장 글꼴로 쓸 수 있는 문자만 담을 수 있으므로, 중국어, 일본어, 한국어 단어는 해당 글꼴이 추가될 때까지 레이어에 쓰지 않고 몇 개인지 알려 드립니다.

브라우저가 정말로 맞지 않는 경우

이미지가 기기를 떠나지 않는다는 것이 여기서 읽는 이유의 전부이며, 그 대가로 어려운 문서에서는 정확도가 떨어집니다. 이 트레이드오프는 실제로 존재하고, 숨기기보다 분명히 말씀드릴 가치가 있습니다.

이어 쓴 필기체는 인식하지 못합니다. 여기서도, 일반 OCR 도구 어디서도요. 이 도구들은 인쇄체 인식기입니다. 글자 모양을 인식하는데, 필기체에는 인식할 개별 글자 모양이 없습니다. 또박또박 쓴 글자는 다시 입력하는 대신 고쳐 쓸 만큼 잘 나오는 경우가 많습니다. 대문자로 쓴 글씨, 손으로 채운 양식, 정성껏 쓴 메모 같은 것이요. 손글씨 인식이 있는 이유이자, 텍스트 옆에 신뢰도 수치를 보여 주는 이유입니다. 필기체를 제대로 읽으려면 손글씨로 특별히 학습된 인식기가 필요하며, 좋은 것들은 탭이 아니라 서버에서 실행됩니다.

어려운 문서라면 클라우드 OCR이 이보다 낫습니다. Google, Amazon, Microsoft는 브라우저 탭에 담을 수 있는 것보다 훨씬 많은 데이터로 학습한 인식기를 운영하며, 흐릿한 사진, 빽빽한 다단 페이지, 특이한 글꼴, 작성된 양식에서 눈에 띄게 더 정확합니다. ABBYY FineReader 같은 유료 데스크톱 프로그램도 마찬가지입니다. 어려운 문서의 정확도가 문서를 내 컴퓨터에 두는 것보다 중요하다면 그중 하나를 쓰세요. 그것이 솔직한 비교이며, 판단 기준으로 삼으셔야 할 부분입니다.

대량 작업은 명령줄의 몫입니다. 이 도구들은 사람이 클릭할 때 문서 하나를 읽습니다. 스캔본 2,000개를 정해진 일정에 처리하는 일은 OCRmyPDF 같은 데스크톱 OCR 도구가 할 일입니다. 명령 하나로 폴더 전체의 PDF에 텍스트 레이어를 추가하며, 무료이고, 같은 종류의 인식을 클릭 없이 해 줍니다.

아예 하지 않는 것들도 있습니다. 원근은 보정하지 않습니다. 옆에서 찍은 페이지는 사다리꼴 모양 그대로 남고 회전만 바로잡으므로, 바로 위에서 찍는 데 1초를 더 들일 가치가 있습니다. 심하게 접힌 자국이나 책 제본 부분 근처의 휘어짐도 그대로 남습니다. 그리고 여기에는 카메라 기능이 없습니다. 코드 인식 도구는 실시간 화면이 아니라 이미 가지고 있는 이미지를 해독합니다.

로컬에서 실행하는 데 따르는 실제 비용이 하나 있습니다. 어떤 언어를 처음 쓸 때 인식기와 언어 팩을 이 사이트에서 받아 오는데, 몇 MB 정도라 첫 실행이 이후보다 느립니다. 다른 누군가의 CDN에서 받아 오는 것은 없으며, 돌려보내는 것도 없습니다.

이름이 비슷한 도구 중 고르기

이미지 텍스트 추출과 스크린샷 OCR. 같은 인식기를 다르게 전처리하며, 그 차이는 겉모양의 문제가 아닙니다. 사진은 반듯하게 펴고 조명을 고르게 맞춥니다. 스크린샷은 확대만 하고 나머지는 그대로 둡니다. 기울기도 고르지 않은 조명도 없는데 있는 것처럼 처리하면 오히려 나빠지기 때문입니다. 스크린샷 OCR은 붙여넣기도 받습니다. Ctrl+V, Mac에서는 Cmd+V로 클립보드에서 바로 넣으며, 디스크에 먼저 저장할 필요가 없습니다.

이미지 텍스트 추출과 문서 스캔. 이미지 텍스트 추출은 단어만 주고 이미지는 버립니다. 문서 스캔은 이미지를 유지한 채 반듯하게 펴고, 잉크 뒤 종이를 하얗게 만들어 스캔한 것처럼 보이는 PDF를 줍니다. 원하면 텍스트를 보이지 않게 뒤에 깔 수도 있습니다. 텍스트를 어딘가에 붙여 넣으려면 전자를, 누군가에게 문서를 보내려면 후자를 쓰세요.

문서 스캔과 PDF OCR. 문서 스캔은 사진에서 시작해 PDF를 만듭니다. PDF OCR은 이미 있는 PDF에서 시작해 텍스트 레이어를 추가합니다. 둘 다 페이지의 모습은 바꾸지 않습니다. 계약서를 사진으로 찍었다면 전자, 스캔본을 이메일로 받았다면 후자가 필요합니다.

손글씨 인식과 이미지 텍스트 추출. 같은 인식기이지만, 표 찾기 기능을 끄고 신뢰도 수치를 그만큼 눈에 띄게 보여 줍니다. 손글씨에서는 그 수치가 결과에서 쓸모 있는 부분이기 때문입니다. 글씨가 이어 쓴 필기체라면 어느 페이지도 읽지 못하며, 손글씨 페이지는 그럴듯한 엉터리를 돌려주는 대신 그렇다고 알려 드립니다.

QR 코드 읽기와 바코드 읽기. 사각형 코드냐 줄무늬 코드냐의 차이이며, 가진 것이 어느 쪽인지 알아 둘 만합니다. QR 페이지는 QR, Micro QR, Data Matrix, Aztec, PDF417을 읽습니다. 탑승권과 운전면허증도 여기에 해당하는데, 점이 번진 것처럼 보여도 사각형 형식의 코드입니다. 바코드 페이지는 줄무늬로 된 유통·물류 형식(EAN, UPC, Code 128, Code 39, ITF)을 읽고, 나머지 숫자로 계산하는 마지막 숫자인 체크 숫자를 확인합니다. 믿을 수 있는 번호와 그럴듯해 보이기만 하는 번호를 가르는 것이 바로 이것입니다. 어느 쪽도 OCR이 아닙니다. 코드는 정해진 기하 구조를 가진 기호이므로, 해독은 글자 모양을 추측하는 것이 아니라 계산입니다. 실패하는 방식도 다릅니다. 사각형 코드는 오류 정정 기능이 있어서 긁힌 자국이나 가운데 인쇄된 로고도 견딥니다. 줄무늬 코드는 그런 기능이 전혀 없어서, 막대 위에 반사광이 지면 틀린 번호가 아니라 아예 읽지 못합니다.

이 도구들의 기반 기술

실제 작업을 수행하는 오픈 소스 엔진과, 이들이 구현한 규격입니다.

  • TesseractApache-2.0 — 120개 이상 언어의 텍스트 인식, 언어 팩은 이 사이트에서 제공.
  • ZXingApache-2.0 — QR 코드와 바코드 읽기.
  • QR code specification (Denso Wave)Specification — 형식 개발사가 공개한 버전별 크기와 오류 정정 수준.

자주 묻는 질문

이미지나 문서가 어딘가에 저장되나요?

아니요. 인식기와 언어 팩은 어떤 언어를 처음 쓸 때 이 사이트에서 제공되며, 이미지 자체는 어디에도 보내지지 않습니다. 그래서 첫 로드 이후에는 Wi-Fi를 꺼도 작동하며, 어디에도 아무것도 저장하지 않습니다. 이는 코드 페이지에서 가장 중요합니다. QR 코드에는 Wi-Fi 비밀번호, 결제 요청, 2단계 인증 비밀 키가 담길 수 있기 때문입니다.

얼마나 정확한가요?

반듯하게, 초점이 맞게 찍은 선명한 인쇄 글자라면 1,000자에 몇 자 정도 틀립니다. 흐림, 반사광, 낮은 대비, 특이한 글꼴, 그림 위에 인쇄된 글자에서는 정확도가 떨어집니다. 신뢰도 수치는 추측하게 두지 않고 텍스트 옆에 표시되며, 수치가 낮다면 거의 언제나 이미지가 문제입니다. 조명을 밝게, 각도를 줄이고, 텍스트가 화면을 꽉 채우게 찍으면 대부분 해결됩니다.

손글씨도 읽을 수 있나요?

또박또박 떨어뜨려 쓴 글자는 대개 읽고, 이어 쓴 필기체는 읽지 못합니다. 이 사이트만의 한계가 아닙니다. 일반 OCR 도구는 인쇄체로 학습해 글자 모양을 인식하는데, 필기체에는 인식할 개별 글자 모양이 없습니다. 손글씨 인식은 이를 분명히 밝히고 인식해 낸 만큼 보여 주는 페이지이며, 자신만만한 오답보다 훨씬 쓸모 있습니다.

어떤 언어를 읽을 수 있나요?

영어, 벵골어, 힌디어, 우르두어, 아랍어, 스페인어, 프랑스어, 독일어, 포르투갈어, 러시아어, 중국어, 일본어, 한국어를 포함해 120개 이상입니다. 문자 체계는 이미지 자체에서 판단합니다. 라틴 문자, 키릴 문자, 아랍 문자, 데바나가리 문자처럼 여러 언어가 같은 문자 체계를 쓰는 경우에는 브라우저의 언어 설정으로 정하며, 언제든 바꿀 수 있습니다.

카메라를 사용하나요?

아니요, 허용할 권한도 없습니다. 여기 있는 모든 도구는 이미 가지고 있는 이미지를 읽습니다. 사진 앱의 사진, 스크린샷, 누군가 보내 준 파일 같은 것이요. 코드나 문서가 눈앞에 있다면 먼저 사진을 찍고, 그 사진을 끌어다 놓으세요.

표는 표로 나오나요?

괘선이 보인다면 그렇습니다. 격자를 먼저 찾고 각 셀을 따로 읽으므로 레이블이 값과 뒤섞이지 않으며, 결과는 스프레드시트에 바로 붙여 넣을 수 있는 탭 구분 행입니다. 괘선 없이 공백만으로 배치한 표는 읽는 순서대로 텍스트 열로 읽으며, 붙여 넣었을 때 대개 제대로 나오지만 보장되지는 않습니다.