번역 전 OCR 줄바꿈 및 하이픈 연결 문제 해결하는 방법
실제 하이픈, 단락, 목록, 운문을 삭제하지 않고 자동 줄바꿈된 OCR 텍스트를 정리해 보세요. 되돌릴 수 있는 작업 방식과 다운로드 가능한 12가지 정리 예시를 제공합니다.

OCR 줄바꿈을 수정하려면 먼저 한 단락에 속하는 텍스트를 파악하세요. 그런 다음 불필요한 줄바꿈만 공백으로 바꿉니다. 줄에 걸쳐 나뉜 단어의 경우, 하이픈을 제거할지 유지할지 개별적으로 판단해야 합니다. 예를 들어 trans- 뒤에 lation 이(가) 오면 translation이(가) 되지만, well- 뒤에 known 이(가) 오면 well-known이(가) 됩니다. 변경 내역을 기록해 두고 애매하게 연결된 부분은 원본 페이지와 비교하세요.
책 전체를 대상으로 '모든 줄바꿈 제거'나 '모든 하이픈 삭제'를 일괄 실행하지 마세요. 정리된 텍스트가 겉으로는 더 자연스러워 보일 수 있지만, 그 과정에서 단락이 사라지거나 두 개의 목록 항목이 합쳐지거나 기술 식별자가 변형될 수 있습니다. 우리의 목표는 개행 문자의 개수를 무조건 줄이는 것이 아니라, 신뢰할 수 있는 읽기용 또는 번역용 사본을 만드는 것입니다.
이 가이드는 텍스트 인식 단계가 끝난 후부터 시작합니다. PDF에서 텍스트를 복사했을 때 글자나 숫자가 잘못 나온다면 먼저 텍스트 레이어의 상태를 진단하세요. 줄바꿈을 바꾼다고 해서 잘못 인식된 B-2O4 을(를) 원래 의도했던 B-204.
각 줄바꿈이 무엇을 나타내는지 파악하기
원본 스캔 파일과 원시 추출 텍스트는 그대로 보관하세요. 작업용 사본에서는 에디터의 공백이나 단락 기호 표시 기능을 켭니다. 그런 다음 에디터 창의 크기를 조절해 보세요. 저장된 개행 문자 없이 줄이 다시 정렬된다면 화면상에서 단순 자동 줄바꿈된 것이므로 삭제할 필요가 없습니다.
저장된 개행 문자는 다른 방식으로 확인해야 합니다. 이어진 단락, 제목, 목록, 그리고 레이아웃이 확연히 다른 페이지들을 페이지 이미지와 비교해 보세요. 표지만 보고 문서 전체의 구조를 짐작해서는 안 됩니다.
| 줄바꿈이 나타내는 요소 | 적절한 조치 | 필요한 확인 사항 |
|---|---|---|
| 한 단락 내 단어 사이의 시각적 줄바꿈 | 저장된 줄바꿈을 공백 하나로 대체 | 두 줄 모두 원문의 동일한 단락에 속함 |
| 단어 중간 분리 | 조각을 합치고 일반적으로 레이아웃 하이픈 제거 | 의도된 철자, 원문 맥락 및 언어별 고유 규칙 |
| 실제 복합어 하이픈 뒤 줄바꿈 | 줄바꿈을 제거하고 하이픈 유지 | 줄 끝 서식과 관계없이 원래 해당 하이픈을 유지하는 단어 |
| 단락, 제목, 목록 항목 또는 운문 경계 | 경계 유지 | 문장 부호뿐만 아니라 원문 구조 |
| 순서가 불확실한 단 또는 페이지 전환 | 해결되지 않은 상태로 두고 페이지 직접 검토 | 이어짐, 단 순서, 캡션 및 각주 |
빈 줄과 들여쓰기는 단락을 찾는 데 도움이 되지만, 이는 단서일 뿐 확정적인 기준은 아닙니다. 제목 뒤에 빈 줄이 없을 수도 있습니다. 들여쓰기된 줄이 새 단락이 아니라 목록 항목의 이어짐일 수도 있습니다. 마침표로 끝나는 짧은 줄은 단락의 마지막 줄일 수도 있고, 단락 중간에 위치한 문장일 수도 있습니다.
OCR 내보내기 결과에 레이아웃이나 블록 정보가 포함되어 있다면 텍스트를 검토하는 동안 이를 유지하세요. 일반 텍스트 내보내기만 단독으로 사용할 경우 이러한 경계를 재구성하는 데 필요한 단서가 사라질 수 있습니다.
분리된 단어와 실제 하이픈 구분하기
시각적으로 유사한 세 가지 사례는 서로 다른 방식으로 수정해야 합니다.
trans- → translation
lation
well- → well-known
known
trans\u00ADlation → translation in a verified reading copy
마지막 줄에서는 \u00AD 을(를) 사용하여 육안으로 확인하기 어려운 문자를 명시적으로 드러냅니다. 유니코드는 단어 내 임의 분리 표시자인 U+00AD SOFT HYPHEN과(와) 눈에 보이는 하이픈인 U+2010 HYPHEN을(를) 엄격히 구분합니다. 이 문자들은 서로 호환되지 않습니다. 유니코드의 줄 바꿈 명세(Line Breaking Specification) 에서도 줄 바꿈 위치에서 언어에 따라 철자가 바뀌는 현상을 다루고 있습니다. 즉, 눈에 보이는 하이픈을 지우고 글자들을 단순히 이어 붙이는 것만으로는 충분하지 않은 경우가 있습니다.
일반적인 산문의 경우, 검증된 임의 하이픈 표시를 제거하면 읽기 편한 사본을 만들 수 있습니다. 하지만 아카이브용 전사본이라면 원본을 별도로 보관해야 합니다. 겉보기에 단어가 같아 보여도 마커를 제거하면 인코딩된 텍스트 자체가 바뀌기 때문입니다.
후보 철자를 확인할 때는 출발어 사전으로 검증한 후 원문 구절로 돌아가 판단하세요. 사전 표제어는 판단을 돕는 근거일 뿐, 고유명사나 식별자, 역사적 표기법을 무조건 덮어써도 된다는 뜻은 아닙니다. 문서 내에서 반복해서 등장하는지 확인하는 것도 도움이 되지만, OCR 오류 역시 일관되게 반복될 수 있다는 점을 유의해야 합니다.
예를 들어, 독일어 샘플을 살펴보겠습니다.
Die Auf-
gabe ist klar.
직접 작성한 이 예문에서 의도한 단어는 Aufgabe; 두덴(Duden) 사전의 표제어 에서는 음절 구분을 Auf|ga|be로 안내합니다. 따라서 여기서는 Auf- 와(과) gabe 을(를) 하나로 합치는 것이 타당합니다. 다만 이 단일 사례를 독일어의 일반적인 하이픈 제거 규칙으로 일반화해서는 안 되며, 현대 사전의 맞춤법으로 구판 서적의 고유한 철자법을 무단으로 대체해서도 안 됩니다.
URL, 카탈로그 코드, 화학명, 음수 값, 기타 기술적 토큰은 별도의 검토 대상으로 다루어야 합니다. 대시나 하이픈의 유지 여부는 영어 단어 휴리스틱이 아니라, 원문과 해당 토큰의 의미에 따라 결정되어야 합니다.
12가지 통제된 예제가 보여주는 것
저희는 다운로드 가능한 정리 시연 데이터 를 제작하여 12개의 원본 문자열을 수록했습니다. 작성 당시부터 의도한 단어와 구조를 명확히 정의한 뒤, 의도적으로 선별된 줄 바꿈과 하이픈 오류를 삽입했습니다. 이는 OCR 엔진의 실제 출력물이나 도서 스캔본이 아니라 합성(synthetic) 텍스트 예제입니다.
단순 일괄 처리 방식(blunt baseline)은 '하이픈+줄바꿈' 제거, 남은 줄바꿈의 공백 치환, 소프트 하이픈 제거라는 세 가지 치환만 수행합니다. 반면 두 번째 방식은 정확한 텍스트에 대해 개별적으로 승인된 변경 사항만 적용하며, 문단을 임의로 인식하거나 단어 철자를 자동으로 결정하려 하지 않습니다.
| 샘플 | 단순 일괄 기준 | 승인된 판정 |
|---|---|---|
| 영어 산문 줄 바꿈 | 두 줄을 올바르게 연결합니다 | 확인된 줄바꿈을 공백으로 바꿉니다 |
trans- / lation | 올바르게 생성합니다: translation | 삽입된 하이픈과 줄바꿈을 제거합니다 |
well- / known | 생성 결과: wellknown | 원래 있던 하이픈을 유지합니다 |
독일어 Auf- / gabe | 올바르게 생성합니다: Aufgabe | 확인된 이 표기만 연결합니다 |
| 포함된 U+00AD | 임의 하이픈(소프트 하이픈) 마커를 제거합니다 | 원문 가독성을 위해 해당 마커를 제거합니다 |
| 프랑스어 말줄임표 후 새 단락 시작 | 단락을 병합합니다 | 작성자가 의도한 단락 구분을 유지합니다 |
| 번호 매기기 목록, 운문, 코드 및 제목 | 서로 다른 구조를 하나로 뭉개버립니다 | 줄바꿈을 유지합니다 |
| 빈 줄이 없는 두 개의 단락 | 하나로 연결합니다 | 작성자가 의도한 단락 구분을 유지합니다 |
| 검토되지 않은 페이지 마커 | 페이지 전환을 뭉개버립니다 | 순서를 확인할 때까지 그대로 둡니다 |
2026년 10월 3일 기준, Node.js 25.2.1 환경에서 픽스처를 실행했을 때 단순 기준선 방식에서는 12개 중 4개 예시에서만 기준 텍스트와 일치하는 결과가 나왔습니다. 반면 승인 기반 방식은 12개 기준 텍스트 모두와 일치했으며, 실행 취소를 통해 12개 입력을 모두 원래대로 복원했습니다. 또한 유효하지 않은 오래된 입력, 고유하지 않은 일치 항목, 누락된 일치 항목도 올바르게 거부했습니다.
이 결과는 작성자가 직접 확인한 기준 참조본과 패치가 정확히 일치하는지 테스트한 것입니다. 승인된 결정 사항에 이미 정답이 포함되어 있고 실패 사례를 드러내기 위해 의도적으로 코퍼스를 선별했으므로, 이 결과가 실제 환경에서의 정확도를 대변하지는 않습니다. 상용 텍스트 정제 도구, OCR 엔진, 번역 모델 또는 BookTranslator 업로드 환경을 테스트한 것은 아닙니다. 재시도나 제외된 샘플은 없었습니다.
다음을 다운로드하세요: 실제 입출력 및 패치 로그 및 재현 지침. 이 JavaScript는 외부 의존성이나 네트워크 호출 없이 로컬에서 실행되어 결과를 출력하며, 사용자의 파일을 덮어쓰지 않습니다. 검증 로직은 승인된 편집이 다른 텍스트에 잘못 적용되지 않도록 보호할 뿐, 해당 편집이 언어학적으로 올바른지까지 판단하지는 못합니다.
검증된 블록을 한 번에 하나씩 정리하기
읽기 순서와 단락 경계를 명확히 확인할 수 있는 짧은 산문 블록부터 시작하세요. 캡션, 인용문, 목록, 각주가 뒤섞인 장 전체를 한꺼번에 다루지 마세요.
- 원본 복사본을 저장하고 출처 위치를 기록하세요. 검토한 각 구절마다 파일 이름, 페이지 번호, 단락 또는 블록 번호, 언어 정보를 함께 보관하세요.
- 구조적 경계를 먼저 표시하세요. 제목, 목록 항목, 운문, 표, 코드를 일반 산문과 분리하세요. 나중에 페이지 마커를 제거하더라도 본문 텍스트 외부에 페이지 참조 정보를 보존해 두세요.
- 해당 블록 내 일반적인 단어 간 줄바꿈을 연결하세요. 확인된 줄바꿈은 공백으로 대체하세요. 단어가 공백 없이 붙어버리지 않았는지, 기존 공백이 중복되어 거슬리지 않는지 점검하세요.
- 분리된 단어는 따로 검토하세요. 전체 토큰과 주변 문장을 함께 확인하세요. '레이아웃 하이픈 제거', '실제 하이픈 유지', 또는 '미해결'로 기록하세요. 미해결 후보를 승인된 변경 사항으로 처리해서는 안 됩니다.
- 변경 사항을 수락하기 전에 diff를 점검하세요. 제거된 각 줄바꿈이나 하이픈을 원본과 비교합니다. 수정 결정 내역과 함께 정제된 버전을 새 파일 이름으로 저장합니다.
- 저장된 결과물을 다시 열어 복사합니다. 에디터의 미리보기 화면만 보지 말고, 실제로 사용할 파일을 직접 확인하세요.
분량이 적은 발췌문이라면 변경 내용 추적 기능을 활용한 수동 편집이나 전후 비교만으로도 충분할 수 있습니다. 하지만 분량이 더 길다면 패치 목록에 원래의 부분 문자열, 대체 텍스트, 위치, 사유, 검토자를 정확히 기록해야 합니다. 소스 체크섬을 활용하면 입력 텍스트가 변경된 후 이전 승인 내용이 잘못 적용되는 것을 방지할 수 있습니다.
에디터에 단락 유지 정제 모드가 있다면, 일반적인 줄글뿐만 아니라 까다로운 텍스트 블록에서도 해당 모드를 테스트해 보세요. 이중 줄바꿈을 유지한다고 해서 OCR이 단일 줄바꿈으로 처리해 버린 단락 경계까지 복구되지는 않습니다. 표와 코드 블록을 먼저 확인하기 전에는 들여쓰기를 무작정 삭제하거나 모든 공백을 축소하지 마세요.
원본 페이지 이미지를 다시 확인해야 하는 시점
프랑스어 문장 부호를 보면 왜 문장 끝 감지가 곧 단락 감지가 아닌지 잘 알 수 있습니다. 직접 작성한 예시에서 Il attend… 와 Le lendemain, il part. 는 서로 다른 단락에 속합니다. 말줄임표만으로는 이러한 단락 경계를 확정할 수 없습니다. 말줄임표에 관한 퀘벡 프랑스어 사무국(OQLF)의 가이드라인 을 보면 말줄임표가 말의 중단이나 불완전한 생각을 나타내는 데 쓰인다고 설명합니다. 다음 줄과 이어 붙여야 할지 판단하려면 페이지 구조를 직접 확인해야 합니다.
다음과 같은 대상은 원본 이미지 검토를 필수로 진행하세요.
| 대상 | 텍스트만으로는 불충분한 이유 | 비교 항목 |
|---|---|---|
| 본문이 바로 이어지는 제목 | 추출 과정에서 빈 줄이 남아있지 않을 수 있음 | 서체, 정렬, 간격 및 섹션 내 역할 |
| 페이지나 단을 넘어가는 구절 | 헤더, 캡션, 각주가 흐름을 끊을 수 있음 | 원본의 마지막 줄, 이어지는 내용 및 읽기 순서 |
| 이름, 코드, 수량 또는 생소한 용어 | 그럴듯해 보이는 결합이라도 원래 의미가 바뀔 수 있음 | 대시 종류와 숫자를 포함한 모든 문자 |
| 고어/역사적 언어 표기 분리 | 인쇄물에서 줄바꿈된 표기가 분리되지 않은 원래 단어와 다를 수 있음 | 판본, 원본 철자, 적절한 해당 언어 참조 자료 |
| 시, 목록, 표 또는 코드 | 줄바꿈 자체가 의미나 구조를 담고 있을 수 있음 | 행 구분, 항목 경계, 셀 및 들여쓰기 |
| 말줄임표, 약어 또는 짧은 마지막 줄 | 문장 부호만으로는 단락 내 위치를 단정할 수 없음 | 전체 단락 및 해당 단락을 둘러싼 블록 |
여러 페이지에서 동일한 문제가 나타나면 문서 전체에서 해당 패턴을 검색하여 일치하는 항목을 검토하세요. 원본 글자, 읽기 순서 또는 구절 전체가 잘못되었다면 정규화 작업을 중단하고 문자 인식이나 텍스트 추출 단계부터 다시 점검해야 합니다. 여러 언어가 섞여 있는 문서의 문자 인식은 별도의 다국어 PDF OCR 워크플로.
번역 전 정리된 원본 검증하기
수정된 블록을 원본 페이지와 비교한 뒤, 다른 블록과 추출본에 포함된 서로 다른 모든 구조적 유형을 점검하세요. 이전에 오류가 발생했던 부분은 반드시 검토 대상에 포함해야 합니다. 샘플링 검사는 확인한 구절에 대한 근거만 제공할 뿐, 책의 나머지 전체를 보증하지는 않습니다.
- 이름, 숫자, 날짜, 코드가 원본과 여전히 일치하는지 확인합니다.
- 제거된 모든 하이픈과 줄바꿈을 거쳐 재구성된 철자를 꼼꼼히 점검합니다.
- 단락, 제목, 목록 항목, 시의 행 경계를 비교합니다.
- 페이지가 넘어갈 때 첫 줄과 마지막 줄이 누락 없이 유지되었는지 확인합니다.
- 해결되지 않은 후보를 검색하고 검토 로그에 명확히 기록해 둡니다.
- 최종 저장된 버전이 다음 워크플로로 전달되는 파일과 일치하는지 확인합니다.
검색 가능한 텍스트나 메모만 필요했던 것이라면, 이 검증된 추출본으로 작업이 끝날 수 있습니다. 텍스트를 복구하기 위해 번역까지 진행할 필요는 없습니다.
문서를 다른 언어로 번역해야 한다면, 검증된 콘텐츠를 지원되는 문서 형식으로 준비한 후 전체 문서 번역 워크플로를 이용하세요. BookTranslator의 OCR 모드는 원본 페이지 레이아웃을 그대로 복제하기보다는 인식된 콘텐츠를 바탕으로 번역된 PDF를 새롭게 재구성합니다. 따라서 외부 텍스트 정리 편집기 역할을 하거나 원본의 모든 줄바꿈이 올바르게 해석되었음을 보증하는 도구는 아닙니다. 자세한 내용은 스캔 PDF 가이드 에서 텍스트 인식이 필요한 시점을 자세히 설명합니다.
원문 페이지와 정리 로그를 보관해 두었다가 최종 PDF 번역 QA 검토에 활용하세요. 번역문이 아무리 매끄러워도 원문에 원래 하이픈이 있어야 했는지, 혹은 연속된 것처럼 보이는 두 문장이 사실은 별개의 문단이었는지까지는 번역문만 보고 알 수 없습니다.





