테크레시피

PDF 텍스트 추출이 어려운 이유

PDF 파일은 어떤 환경 PC에서도 텍스트와 이미지 표시를 해주는 데이터 형식이다. 하지만 PDF에서 텍스트 데이터를 복사하려고 하면 잘 선택되지 않거나 텍스트 내용이 이상해져 버리기 일쑤다. 왜 PDF 파일에서 텍스트 추출이 어려울까.

PDF 파일 텍스트화 단체인 필링디비(FilingDB)에 따르면 먼저 읽기 보호. PDF 파일 속 내용은 보호되어 있다. 텍스트 자체는 제대로 표시되어도 텍스트를 복사하려고 하면 텍스트 파일 복사가 거부됐다(Copying text was denied)는 내용이 표시되면서 텍스트 추출을 할 수 없도록 되어 있다. 복사할 수 없는 이유는 PDF 파일에 텍스트 복사를 허용할지 여부를 결정할 권한 설정이 되어 있기 때문이다. 이 설정은 PDF 뷰어가 텍스트 복사를 금지해버린다.

PDF 파일에는 페이지에 실제로 표시되는 것보다 더 많은 텍스트 데이터가 포함될 수 있다. 눈에 보이는 텍스트보다 실제로는 페이지 범위 밖에 다른 텍스트가 배치되어 있기도 해서 대부분 PDF 뷰어에선 표시되지 않는다. 하지만 작성자가 데이터를 지우지 않으면 이런 데이터 자체는 남아 있어 전체 페이지 텍스트를 추출하면 표시가 되어버리는 것이다.

다음은 너무 작은 문자로 인해 보이지 않는 문자. PDF 파일에는 아주 작은 텍스트나 숨겨진 텍스트가 있을 수 있다. 보이지 않게 흰색 배경에 작은 흰색 텍스트로 넣기도 한다. 이런 텍스트는 텍스트를 작성할 때 메모나 검색 용이성을 위해 삽입하는 것이다.

다음은 공백. PDF 파일 내 텍스트 데이터에는 단어 사이에 공백이 포함될 수 있다. 대부분 경우 문자 사이 거리를 조정하는 커닝 처리로 인해 발생하는 것이다. 이런 상태에서 텍스트를 복사하면 단어 사이에 불필요한 공간이 포함되어 있어 단어 사이 띄어쓰기가 엉망이 되어버리기도 한다.

다음은 공간 소실. 불필요한 공백 뿐 아니라 원래 있던 공간이 없어지거나 공간이 다른 문자로 대체되어 버리는 경우도 있다. 말하자면 띄어쓰기가 전혀 없는 공백이 사라진 상태로 복사되어 버리는 것이다. 여분 공간과 공간 손실 문제 탓에 PDF 뷰어에서 텍스트를 복사하는 것보다는 광학문자인식 OCR에서 텍스트로 변환하는 게 효율적이다.

다음은 글꼴. PDF 글꼴 처리는 복잡하다. PDF 문서에 따라 비표준 글꼴이나 자체 인코딩이 포함되어 있는 경우 텍스트를 다른 문자로 표시하거나 PDF 파일에서 텍스트가 아닌 이미지 데이터로 인식하는 등 텍스트 추출이 더 어려워진다.

다음은 텍스트와 단락 순서다. 단락 순서를 추출하는 건 2가지 점에서 어렵다. 먼저 정답이 없는 경우. 어떤 텍스트는 페이지 전체 문장 마지막에 삽입해야 하거나 문장 중간에 표시할지 불분명해 만든 본인 밖에 모르는 경우도 있다. 또 보통 읽을 땐 왼쪽에서 오른쪽, 위에서 아래 순서로 읽는 게 기본이지만 단락이 이상하게 나뉜 경우 프로그램 알고리즘이 올바른 순서를 판단하는 건 어려운 문제다.

다음은 포함된 이미지. PDF 파일로 변환된 모든 내용이 텍스트 데이터가 아닌 이미지 데이터로 저장되어 버리는 경우도 많다. 이런 경우 직접 추출할 수 있는 텍스트 데이터가 없기 때문에 OCR에 의지할 수밖에 없다.

필링DB가 지적한 문제 대부분은 OCR로 해결할 수 있지만 OCR에도 몇 가지 단점이 있다. 먼저 OCR 검사는 PDF 파일에서 텍스트를 직접 추출하는 것보다 수십 배 긴 시간이 걸린다. 또 OCR에서 이모티콘이나 복잡한 수학기호 등 문자를 취급할 수 있으며 PDF 파일에 삽입된 순서를 참조해 텍스트 순서를 제대로 할 수도 없다.

원래 PDF 파일은 텍스트 편집기와 같은 데이터 입력 형식으로 설계된 게 아니라 문서를 정밀하게 출력하는 데이터 출력 형식으로 설계한 것이다. PDF 파일은 텍스트 추출에 적합하지 않은 형태이며 필링DB는 PDF 파일에서 텍스트를 추출하기 전에 다른 형식으로 데이터가 제공되는지 확인하는 게 좋다고 권하고 있다. 관련 내용은 이곳에서 확인할 수 있다.

추천기사