스캔 PDF 기울기 보정

기울어진 스캔 페이지를 똑바로 폅니다 — 페이지마다 따로 재서 말로 알려 주고, 페이지별로 직접 조절하며 전후 비교로 확인할 수 있습니다. 이미 반듯한 페이지는 그대로 두고, 좌우 약 15°까지 보정하며 100% 브라우저에서 처리하고 업로드하지 않습니다

스캔한 PDF를 드롭하거나 클릭해 선택

🔒 모든 처리가 브라우저에서 이루어지며 PDF는 업로드되지 않습니다.

비뚤어진 스캔 페이지를 똑바로

스캔하거나 촬영한 문서는 완벽하게 수평으로 놓이는 경우가 거의 없어 페이지마다 1~2도씩 기울어지고, 보기에도 지저분하고 OCR 정확도도 떨어집니다. PDF를 넣으면 모든 페이지를 렌더링해 텍스트가 얼마나 기울었는지 측정한 뒤, 깨끗한 흰 배경 위에서 각 페이지를 수평으로 되돌립니다. 감지는 투영 프로파일 방식을 사용합니다 — 작은 각도들을 훑어 텍스트 줄이 가장 또렷하고 수평이 되는 각도를 고르며, 좌우 약 15도까지 보정합니다. 페이지마다 따로 판단하므로 섞여 있는 묶음도 올바르게 펴집니다. 다만 글줄을 기준으로 재기 때문에 사진·표·큰 서명이 대부분인 페이지에서는 엉뚱한 값이 나올 수 있습니다. 그래서 잰 각도를 말로 알려 주고, 마음에 들지 않으면 직접 정할 수 있습니다 — 좌우 15° 안에서 슬라이더로 맞추거나 숫자를 입력하고, 0.1°씩 미세하게 밀어 가며 내 페이지의 전후 비교 미리보기로 확인한 뒤 내려받으면 됩니다. 직접 정한 각도는 그 페이지에만 적용되고, 나머지 페이지는 계속 따로 재서 폅니다. 묶음 전체가 같은 방향으로 기울었다면 버튼 하나로 모든 페이지에 같은 각도를 줄 수 있습니다. "1-3, 8"처럼 일부 페이지만 골라 펼 수도 있고, 0.4°가 안 되는 페이지는 다시 그리지 않고 그대로 두어 글자를 계속 선택할 수 있습니다.

설계부터 프라이버시 중심

모든 처리는 pdf.js와 pdf-lib로 로컬에서 이루어집니다. 페이지를 캔버스에 렌더링해 분석·회전한 뒤 완전히 새로운 PDF로 다시 삽입하는 과정이 전부 브라우저 안에서 진행되므로 문서가 서버로 업로드되지 않으며, 한 번 불러오면 오프라인에서도 동작합니다. 돌아간 페이지는 회전된 이미지로 다시 만들어지기 때문에 그 페이지는 그림이 됩니다 — 원본 레이아웃에 충실해 보이지만 선택 가능한 텍스트는 사라지고, 아주 뾰족한 모서리는 회전 과정에서 약간 잘릴 수 있습니다. 이미 반듯했거나 대상에서 뺀 페이지는 손대지 않고 복사되므로 원래 내용이 그대로 남습니다. 픽셀 단위로 완벽한 것이 아니라 텍스트 배치에 충실한 방식이며, 텍스트가 거의 없어 기울기를 신뢰성 있게 측정할 수 없는 페이지는 그대로 둘 수 있습니다.

자주 묻는 질문

기울기를 얼마나 보정할 수 있나요?

좌우 약 15도까지 보정합니다. 각 페이지를 독립적으로 측정하며, 0.4°가 안 되게 나온 페이지는 다시 그리지 않고 그대로 복사하므로 글자를 계속 선택할 수 있습니다. 검색 범위를 넘는 심한 기울기는 일부만 보정됩니다.

자동으로 잰 각도가 제 페이지에서는 안 맞습니다. 고칠 수 있나요?

네. 잰 기울기 옆에 슬라이더가 있어서 끌거나, 숫자를 직접 입력하거나, 0.1°씩 밀어 조절할 수 있고 미리보기가 바로 따라옵니다. 직접 정한 각도는 ‘확인할 쪽’에 있는 그 페이지에만 적용되므로, 한 페이지를 고쳐도 나머지 페이지의 측정값은 그대로 남습니다. ‘이 페이지는 다시 자동으로 재기’를 누르면 그 페이지를 다시 자동으로 재고, 묶음 전체가 같은 방향으로 기울었다면 ‘이 각도를 모든 페이지에 쓰기’를 누르면 됩니다.

텍스트를 계속 선택할 수 있나요?

실제로 돌린 페이지만 그렇습니다. 펴는 페이지는 렌더링·회전해 이미지로 다시 만들기 때문에 그 페이지는 그림이 되고 글자를 선택·검색할 수 없습니다 — 새로 스캔한 것과 같은 특성입니다. 이미 반듯했거나 대상에서 뺀 페이지는 손대지 않고 복사되어 글자가 그대로 남습니다. 전체 텍스트 레이어가 필요하면 원본을 보관하거나 보정 후 OCR을 돌리세요.

PDF가 서버로 업로드되나요?

아니요. 렌더링, 기울기 감지, 회전이 모두 브라우저 안에서 pdf.js와 pdf-lib로 처리되므로 파일이 기기를 벗어나지 않으며, 한 번 불러오면 오프라인에서도 동작합니다.