PDF OCR 텍스트 레이어
스캔 PDF에 OCR로 검색·복사 가능한 투명 텍스트 층 추가
파일은 이 브라우저에서만 처리됩니다. 서버에 업로드하지 않습니다.
스캔 PDF에 OCR로 검색·복사 가능한 투명 텍스트 층 추가
암호가 걸린 PDF입니다.
다른 도구로 이어서 편집
처리하고 있습니다…
모든 처리는 이 브라우저 안에서만 이루어집니다. 파일이 서버로 전송되지 않습니다.
다운로드할 파일이 준비됐습니다
이 결과로 이어서 편집
페이지 미리보기 열기
신뢰도 80% 이상 50–79% 50% 미만
설정을 바꾸면 이전 결과는 숨겨집니다. 다시 만들어 최신 설정을 저장하세요.
암호화된 PDF는 먼저 암호를 해제하세요. 페이지 콘텐츠 중심으로 처리하며 목차·첨부·양식·서명 보존은 보장하지 않습니다. 원본을 보관하고 결과를 확인하세요.
처리 중…
0.0
멈춘 것이 아닙니다. 계산이 끝나면 결과가 표시됩니다.
PDF OCR 텍스트 레이어 소개
이 도구에는 인식 엔진이 두 개 있습니다. 기본값인 「AI 정밀 인식」은 PaddleOCR 모델(글줄 검출 PP-OCRv3, 글자 인식 PP-OCRv5 mobile)을 ONNX Runtime으로 브라우저에서 돌리고, 「기본 인식」은 Tesseract의 LSTM 엔진(tesseract.js)에 한국어·영어 best_int 언어 데이터를 씁니다. 두 엔진 모두 이 사이트에서 파일을 받아 로컬에서 실행하므로 스캔 이미지가 외부 OCR 서버로 가지 않습니다.
결과물은 원본 PDF를 다시 그린 것이 아닙니다. 페이지 내용은 한 바이트도 바꾸지 않고, 인식한 단어를 PDF 텍스트 렌더링 모드 3(칠하지도 테두리를 그리지도 않는 모드)으로 원래 글자 위치에 겹쳐 넣습니다. 눈에는 스캔 그대로 보이지만 뷰어는 그 층을 검색·드래그·복사·화면 낭독에 씁니다.
두 엔진은 페이지를 읽는 순서가 다르다
Tesseract는 먼저 페이지 전체의 레이아웃을 분석해 단락과 글줄을 나누고, 각 글줄을 LSTM 신경망에 넣어 글자열로 바꿉니다. 이진화(흑백 변환)된 이미지를 전제로 설계된 엔진이라, 이 도구는 Tesseract로 보낼 때 배경을 평탄하게 만든 뒤 Sauvola 적응형 이진화와 작은 점 제거를 거칩니다. 렌더링 해상도도 user_defined_dpi로 알려 줘 엔진이 글자 크기를 추측하지 않게 합니다.
PaddleOCR 경로는 DB(Differentiable Binarization) 검출기가 「이 픽셀이 글자 영역일 확률」 지도를 만들고, 거기서 글줄 상자를 뽑은 다음 각 글줄을 높이 48픽셀로 잘라 인식기에 넣습니다. 인식기는 글자 사이 경계를 따로 찾지 않고 CTC 방식으로 글자열 전체를 한 번에 내놓습니다. 신경망은 부드러운 경계를 더 잘 읽어서, 스캔 보정을 켜도 이 경로에서는 흑백으로 자르지 않고 배경만 편 회색조를 넘깁니다.
AI 경로의 검출기는 페이지를 긴 변 1600픽셀로 줄여서 봅니다. 그래서 해상도를 올려도 「어디에 글줄이 있나」는 거의 그대로이고, 올린 해상도는 잘라 낸 글줄의 선명도, 즉 인식 정확도에 쓰입니다.
해상도: 300DPI가 기본인 이유
Tesseract 공식 문서는 「최소 300DPI 이미지에서 가장 잘 동작한다」고 적고 있습니다. 문제는 DPI 자체보다 글자 한 개가 차지하는 픽셀 수입니다. 10pt 본문을 200DPI로 렌더링하면 글자 높이가 약 28픽셀인데, 받침과 겹모음이 한 칸에 몰리는 한글은 획 사이 간격이 1~2픽셀로 줄어 「됬/됐」 「읽/잃」 같은 혼동이 늘어납니다.
그래서 선택지는 200·300·400DPI이고 기본은 300입니다. 각주나 영수증처럼 8pt 이하 글씨가 많으면 400을 쓰세요. 반대로 원본 스캔이 150DPI로 저장된 파일이라면 400으로 렌더링해도 없는 정보가 생기지 않습니다. 확대만 될 뿐이니 300 이상에서 결과가 나아지지 않는다면 원본 해상도의 한계입니다. 렌더링은 긴 변 7000픽셀에서 멈춰, 대형 도면 페이지는 설정한 DPI보다 낮게 읽힐 수 있습니다.
언어 선택이 곧 모델 선택
AI 인식은 언어마다 인식 모델을 따로 받습니다. 한국어 모델(약 12.8MB)은 영어·숫자도 함께 읽고, 스페인어를 고르면 프랑스어·독일어·포르투갈어 등 라틴 문자 공용 모델(약 7.7MB)을, 일본어를 고르면 중국어 한자까지 포함한 CJK 모델(약 15.8MB)을 받습니다. 모델은 언어별로 처음 한 번만 내려받습니다.
기본 인식(Tesseract)은 한국어·영어 데이터만 들어 있어 스페인어·일본어에서는 실행되지 않습니다. 한국어 문서에 영어 약어가 섞여 있다면 두 엔진 모두 한국어를 고르는 편이 맞습니다. 영어 전용 모델에 한글 페이지를 넣으면 한글을 비슷한 모양의 라틴 문자로 억지로 맞춘 결과가 나옵니다.
이미 글자가 있는 페이지는 어떻게 판단하나
「텍스트 층이 충분한 페이지 건너뛰기」는 페이지에 글자가 조금이라도 있으면 건너뛰는 방식이 아닙니다. 스캐너가 찍어 넣은 파일명이나 쪽 번호 하나 때문에 스캔 페이지 전체가 인식에서 빠지는 일을 막으려고, 글자 80개 이상이면서 페이지 면적의 1% 이상을 덮을 때만 「충분하다」고 봅니다.
충분해 보여도 한 번 더 확인합니다. 페이지를 약 100DPI로 그려서 텍스트 상자 밖에 글자 모양의 잉크가 많이 남아 있으면(예: 워드 문서에 붙여 넣은 캡처 이미지) 그 페이지도 인식합니다. 이미 보이지 않는 OCR 층이 있는 페이지를 다시 인식하면 기존 층을 지우고 새 층으로 바꿔, 같은 단어가 검색에 두 번 걸리지 않게 합니다.
잘 안 되는 문서
손글씨는 두 엔진 모두 인쇄체 위주로 학습돼 있어 결과를 기대하기 어렵습니다. 도장이 글자 위에 찍힌 부분, 형광펜이 짙은 부분, 배경 무늬가 깔린 증명서도 인식률이 떨어집니다. 세로쓰기 일본어는 현재 AI 경로에서 세로로 긴 상자를 표 괘선으로 보고 건너뛰므로 사실상 읽히지 않습니다.
기울어진 스캔은 인식 전에 같은 도구의 스캔 보정 모드(기울기 보정)로 먼저 펴는 편이 낫습니다. 글줄 검출이 수평 상자를 기준으로 하기 때문에 3~4도만 기울어도 긴 글줄에서 윗줄·아랫줄이 섞일 수 있습니다.
예시
A4 한 쪽을 300DPI로 읽을 때의 픽셀 수
- 입력
A4(595×842pt), 300DPI- 결과
약 2480×3508픽셀, 10pt 글자 높이 약 42픽셀
배율은 300÷72≈4.17입니다. 595×4.17≈2480, 842×4.17≈3508. 10pt는 10×4.17≈42픽셀로, 200DPI(약 28픽셀)보다 한글 획 간격이 1.5배 넓어집니다.
쪽 번호만 있는 스캔 페이지
- 입력
스캐너가 넣은 「- 3 -」 한 줄 외에는 전부 이미지인 페이지, 건너뛰기 켬- 결과
건너뛰지 않고 인식
글자가 8개 미만이면 「글자 층 없음」, 80개 미만이면 「일부뿐」으로 분류돼 인식 대상이 됩니다.
미리보기 색으로 교정할 곳 찾기
- 입력
평균 신뢰도 88%, 일부 단어 빨간 상자- 결과
빨강(50% 미만) 단어만 원본과 대조
초록은 80% 이상, 주황은 50~79%입니다. 평균이 높아도 숫자·고유명사에서 빨간 상자가 나오면 금액이나 이름은 반드시 눈으로 확인하세요.
사용 방법
- 스캔 PDF를 넣으면 이미 글자 층이 있는 페이지를 먼저 알려 줍니다.
- 엔진, 문서 언어, 해상도(기본 300DPI), 페이지 범위를 고릅니다.
- 실행 후 미리보기에서 단어 상자 색과 평균 신뢰도를 확인합니다.
- 텍스트 층이 들어간 PDF와 .txt를 받아 뷰어에서 검색해 봅니다.
자주 묻는 질문
OCR 후에도 복사한 문장에 띄어쓰기가 이상해요.
보이지 않는 층은 단어 단위로 배치되고, 뷰어가 단어 사이 간격을 보고 공백을 다시 추론합니다. 뷰어마다 추론 방식이 달라 공백이 빠지거나 늘 수 있습니다. 정확한 원문이 필요하면 함께 받은 .txt 파일을 쓰세요.
파일 크기가 거의 안 늘었어요. 제대로 들어간 건가요?
텍스트 층은 글자 코드와 좌표뿐이고, 글꼴(일본어 인식은 Noto Sans JP, 그 밖에는 Noto Sans KR)도 실제 쓰인 글자만 부분 포함합니다. 뷰어에서 Ctrl+F로 검색되면 정상입니다.
AI 인식과 기본 인식 중 무엇을 써야 하나요?
보통은 AI 인식이 정확합니다. 모델 내려받기가 부담스럽거나 깨끗한 영문 인쇄물이라면 기본 인식도 충분합니다. 스페인어·일본어는 AI 인식만 됩니다.
인식 결과를 고칠 수 있나요?
이 도구는 결과를 편집하지 않습니다. .txt에서 고쳐 쓰거나, 교정이 많다면 스캔 보정 모드로 이미지를 정리한 뒤 해상도를 한 단계 올려 다시 인식해 보세요.
관련 가이드
출처
- Tesseract documentation — Improving the quality of the output
- Tesseract documentation — Neural nets in Tesseract 4.00 (LSTM)
- PaddleOCR — PP-OCRv5 introduction
- Liao et al. — Real-time Scene Text Detection with Differentiable Binarization (DB, AAAI 2020)
- ISO 32000-1:2008 (PDF 1.7) — 9.3.6 Text Rendering Mode
- tesseract.js
기준일: