PDF에서 복사한 글은 왜 항상 엉망이 될까?
PDF에서 유용한 부분을 찾아 메모에 넣거나, 동료에게 보내거나, 다음 질문의 자료로 쓰고 싶을 때가 있습니다. 선택하고, 복사하고, 붙여 넣으면 몇 초면 끝날 것처럼 보입니다.
하지만 붙여 넣고 나면 한 문장이 여러 줄로 나뉘고, 영어 단어가 중간에서 끊기며, 본문 사이에 페이지 번호까지 섞입니다. 문단 하나를 가져오려 했을 뿐인데 백스페이스를 계속 눌러야 합니다.
글의 순서가 맞고 줄만 끊어진 경우라면, 먼저 문단 안의 단일 줄바꿈을 합치고 문단 사이의 빈 줄은 남겨 두세요. 제목, 목록, 줄 끝의 하이픈은 따로 확인해야 합니다. 두 열의 문장이 뒤섞였다면 줄바꿈을 바로 삭제하지 말고 먼저 복사 순서를 처리하세요.
페이지의 한 줄이 텍스트의 한 문단이라는 뜻은 아니다
PDF 페이지에서는 문장이 오른쪽 끝에 닿으면 줄이 바뀝니다. 하지만 이 시각적인 줄바꿈은 종이나 열 너비 때문일 수 있으며, 작성자가 새 문단을 시작했다는 뜻은 아닙니다.
복사할 때 리더는 페이지의 글자를 하나의 텍스트 흐름으로 다시 구성해야 하지만, 이 두 가지 줄바꿈을 항상 구분하지는 못합니다. pdfminer.six 텍스트 추출 설명서는 글자의 위치와 간격을 바탕으로 줄과 텍스트 블록을 묶는 방법을 설명합니다. 페이지에서 이어져 보이는 내용도 복사하면 나뉠 수 있습니다.
몇 가지 간단한 예를 통해 어떻게 처리할지 살펴보겠습니다.
문장은 이어 붙이고, 문단은 남겨 두기
먼저 비교적 안전하게 정리할 수 있는 경우입니다. 각 문단이 두 줄로 나뉘었지만 문단 사이의 빈 줄은 남아 있습니다.
정리할 텍스트:
We copied a paragraph
from the report into our notes.
The original page remains available
for checking names and numbers.위 텍스트를 iSomor 텍스트 정리에 넣고 다음 세 단계를 따라 보세요.
- 텍스트를 붙여 넣습니다. 먼저 짧은 부분을 ‘원본 내용’에 넣고 문단 사이의 빈 줄도 그대로 둡니다.
- 옵션을 선택해 정리합니다. ‘단일 줄바꿈 합치기’와 ‘공백 정리’를 켭니다. ‘줄 끝에서 끊긴 단어 연결’은 우선 끈 채로 ‘텍스트 정리’를 클릭합니다.
- 확인한 뒤 사용합니다. 양쪽 내용을 비교해 문단과 단어가 잘못 이어지지 않았는지 확인한 다음 텍스트를 복사하거나 TXT를 다운로드합니다.
도구 출력:
We copied a paragraph from the report into our notes.
The original page remains available for checking names and numbers.문장 중간의 줄바꿈은 사라졌지만 두 문단 사이의 구분은 남아 있습니다. 영어 단어 사이의 공백도 유지되어 paragraph와 from이 붙지 않습니다.
이 예에서는 문단 안의 단일 줄바꿈과 문단 사이의 빈 줄이 구분되어 있습니다. 복사한 뒤 문단 사이에도 줄바꿈 하나만 남았다면 원문을 확인해 빈 줄을 먼저 넣고 정리하세요.
줄 끝의 하이픈을 모두 지우면 안 된다
영어 문서에서는 레이아웃 때문에 단어가 줄 끝에서 나뉠 수 있습니다. 예를 들면 다음과 같습니다.
The trans-
lation is ready for review.여기서 trans-와 다음 줄의 lation은 원래 하나의 단어입니다. ‘줄 끝에서 끊긴 단어 연결’을 켜면 도구는 다음과 같이 출력합니다.
The translation is ready for review.하지만 모양이 비슷하다고 해서 항상 같은 방식으로 처리할 수 있는 것은 아닙니다. 원래 cross-validation이라고 쓰인 문장을 보세요.
We used cross-
validation to compare the models.같은 옵션을 켜면 실제 출력은 다음과 같습니다.
We used crossvalidation to compare the models.줄바꿈은 사라졌지만 의미가 있는 하이픈도 삭제되었습니다. 이 경우에는 cross-validation을 유지해야 합니다.
따라서 처음에는 단어 연결 옵션을 꺼 두는 편이 안전합니다. 레이아웃 때문에 단어가 나뉜 것이 맞는지 확인한 뒤 사용하세요. 복합어나 모델 번호가 포함되어 있다면 일반 줄바꿈부터 정리하고 하이픈은 하나씩 확인하는 것이 좋습니다.
제목과 목록에는 약간의 여백이 필요하다
한 줄만 차지하는 내용이라고 해서 모두 다음 줄과 이어야 하는 것은 아닙니다.
다음 예에서 첫 줄은 제목이고, 그 뒤에 설명과 목록이 옵니다.
Preparation
Keep the original PDF first.
- Check names
- Check dates
- Check amounts‘단일 줄바꿈 합치기’와 ‘공백 정리’를 켜면 도구는 실제로 다음을 출력합니다.
PreparationKeep the original PDF first.
- Check names
- Check dates
- Check amounts- 표시가 있는 목록은 남지만 제목과 본문은 합쳐졌습니다. ‘Preparation’이 일반 텍스트가 되면 글자 크기나 굵기 정보가 없기 때문에 줄바꿈 하나만으로 제목임을 알아보기 어렵습니다.
이런 자료라면 정리하기 전에 제목 뒤에 빈 줄을 넣으세요. 같은 옵션으로 다시 처리하면 다음과 같습니다.
Preparation
Keep the original PDF first.
- Check names
- Check dates
- Check amounts빈 줄이 제목과 본문을 분리해 줍니다. 복잡한 중첩 목록, 표, 수식은 일반 문단과 한꺼번에 합치지 말고 따로 남겨 두는 것이 좋습니다.
순서가 이미 틀렸다면 줄바꿈 정리를 서두르지 말기
왼쪽 열의 문장 뒤에 오른쪽 열의 내용이 이어지거나, 문장 중간에 페이지 번호가 들어갔다면 줄바꿈을 삭제해도 읽는 순서는 고쳐지지 않습니다. 먼저 복사 단계로 돌아가세요.
- 두 열이 섞인 경우: 한 열이나 짧은 부분씩 다시 선택하고 복사한 뒤 붙여 넣은 순서를 확인합니다. 그래도 열이 섞이면 다른 추출 방법을 시도합니다.
- 머리글, 바닥글, 페이지 번호가 섞인 경우: 페이지와 대조한 뒤 실제로 섞여 들어온 부분만 삭제합니다. 숫자가 있는 줄을 모두 한꺼번에 지우면 본문의 번호나 데이터까지 사라질 수 있습니다.
- 표가 문자열이 된 경우: 표 머리글, 단위, 행과 열의 관계를 확인한 뒤 일반 텍스트 메모에 넣을지 결정합니다. 공백이 줄었다고 표가 복원된 것은 아닙니다.
- 복사한 글이 깨진 경우: 텍스트 레이어나 글꼴 인코딩을 별도로 확인해야 합니다. 형식 정리로 깨진 문자를 고칠 수는 없습니다.
- 스캔 이미지에 선택 가능한 글자가 없는 경우: 먼저 OCR이 필요합니다. OCR 텍스트 레이어에도 인식 오류가 있을 수 있으므로 ‘복사 가능’이 ‘정확한 글자’를 뜻하지는 않습니다. pypdf 문서는 원래 텍스트가 있는 PDF, 이미지만 있는 스캔 PDF, OCR 레이어가 있는 PDF를 구분합니다. 텍스트의 출처가 서로 다릅니다.
복사한 결과를 사용하기 전에 확인할 부분
짧은 부분을 정리한 뒤에는 쉽게 바뀌는 곳을 먼저 살펴보세요.
- 각 문단의 시작과 끝이 올바르게 이어졌는가?
- 영어 단어가 붙지 않았고 의미 있는 하이픈이 남아 있는가?
- 제목과 목록이 여전히 분리되어 있는가?
- 숫자, 단위, 빼기 기호, 수식 기호가 빠지거나 어긋나지 않았는가?
중국어 문장 부호가 포함되어 있다면 그 주변도 확인해 보세요. 테스트에서는 쉼표 뒤의 줄바꿈을 합친 뒤 불필요한 공백이 남아 직접 지워야 했습니다. 비슷한 자료에 적용하기 전에 먼저 이 짧은 부분에서 방법이 맞는지 확인하세요.
이 문장을 인용하려면 문서 제목, 페이지 번호 또는 링크를 남기고 출처와 일치하는지 확인하세요.
정리하는 이유는 원래 하려던 일로 돌아가기 위해서다
텍스트 정리의 목적은 반복되는 줄바꿈과 불필요한 공백을 줄이는 것이지, 모든 내용을 한 문단으로 눌러 넣는 것이 아닙니다. 본문은 이어지고 제목과 목록은 분리되어 있어야 결과를 계속 사용하기 쉽습니다.
iSomor는 원본 내용과 결과를 함께 보여 주어 무엇이 바뀌었는지 확인할 수 있게 합니다. 확인이 끝나면 메모, 발췌, 토론으로 돌아가 처음 사용하려던 부분에 다시 집중할 수 있습니다.