지금까지의 텍스트 마이닝은 주로 웹으로부터 데이터를 긁어 모아 분석을 하는 거였는데 텍스트 마이닝을 좀 더 유용한 도구로 만들기 위해 웹 텍스트 뿐만 아니라 바이너리 형태로 보관되어 있는 pdf 문서 파일의 텍스트까지 긁을 수 있으면 좋겠다고 생각해서 방법을 찾아 보았다.

오픈소스 도구인 Xpdf는 pdf 파일에서 텍스트 정보를 추출해 txt 파일로 변환해준다. Xpdf를 설치하고 나서 명령 프롬프트에서 pdftotext 명령을 실행시키면 된다. 인터넷에서 알려주는 방법은 Xpdf를 설치한 다음에 R에서 tm 패키지를 설치하고 readPDF() 함수를 쓰라고 나와 있는데 해보면 잘 안된다. 내가 알아낸 방법은 tm 패키지 필요없이 system() 함수를 통해 명령 프롬프트에서 할 일을 R에서 해주는 방식으로 txt 파일을 생성한 다음에 그 txt 파일을 readLines() 함수로 불러들이는 것이다.

1. Xpdf 설치

압축 풀고 영어로 된 INSTALL 문서를 잘 읽어 보면 된다. INSTALL 읽기 싫어하는 사람을 위해서 한글판 설명서를 만들었다.

 

먼저, xpdfreader.com에 들어가서,

 

xpdf > Download > Download the Xpdf command line tools 들어가서 내 OS에 해당하는 파일을 찾고, Download language support packages for Xpdf에서 Korean을 클릭해 xpdf-korean.tar.gz를 다운 받는다.

 

- Windows (update 2020. 2. 13)

1) Windows 32/64-bit:download를 클릭해 zip 파일을 다운 받아서 압축을 푼다.

2) 압축을 풀면  xpdf-tools-win-x.xx라는 이름의 디렉토리가 생기는데 이 디렉토리 이름을 Xpdf로 바꿔서 C:\Program Files 디렉토리에 복사
3) C:\Program Files\Xpdf\DOC\sample-xpdfrc를 xpdfrc로 바꿈

4) xpdf-korean.tar.gz 파일 압축을 풀면 xpdf-korean 디렉토리가 생기는데 이 디렉토리를 korean으로 이름을 바꿔서 C:\Program Files\Xpdf에 복사
5) add-to-xpdfrc 파일 안에 있는 모든 내용을 복사한 후, xpdfrc 파일을 열어 맨 뒤에 붙이고, 방금 붙인 내용에서 UNIX 식으로 되어 있는 경로를 Windows에 맞게 C:\Program Files\Xpdf\korean으로 변경
6) 윈도우에서 내 PC 아이콘을 우클릭 > 속성 > 고급 시스템 설정 > 환경변수 들어가서 시스템 변수 아래 목록에서 Path 선택하고 편집
7) 새로 만들기 누르고 C:\Program Files\Xpdf 쓴 다음에 확인 누르고 리부팅

 

- macOS

1) xpdfbin-mac-3.04.tar.gz를 다운 받아서 압축을 푼다.
2) bin64 안에 있는 파일 전부를 /usr/local/bin에 복사
3) doc 안에 있는 파일 중 *.1은 /usr/local/man/man1로 복사하고, *.5는 /usr/local/man/man5로 복사
(원본에는 "Copy the man pages (*.1 and *.5) to /usr/local/man/man1 and /usr/local/man/man5."라고 되어 있음)
4) doc 안에 있는 sample-xpdfrc를 xpdfrc로 이름을 바꾸어 /usr/local/etc에 복사
5) foolabs.com/xpdf > Download > Language Support Packages 들어가서 xpdf-korean.tar.gz 파일을 다운 받아서 압축을 푼다.
6) xpdf-korean 디렉토리를 korean으로 이름을 바꿔서 /usr/local/share/xpdf에 복사
7) 그 안에 add-to-xpdfrc 파일 안에 있는 내용을 복사한 후, xpdfrc파일을 열어 맨 뒤에 붙임

2. R에서 Xpdf를 이용해 pdf를 txt로 변환

Xpdf를 설치하고, korean language support도 같이 설치했으면

1) R에 R.utils 패키지를 설치하고 라이브러리를 부른다.
2) system() 함수를 이용하여 pdftotext를 실행시킨다.

system() 함수는 프롬프트 명령을 R에서 실행시키게 해 주는 함수다. 맥에서 프롬프트 명령은

 

C:\Users\jaeuk> pdftotext -enc UTF-8 report.pdf

 

이걸 실행시키면 UTF-8 인코딩의  report.txt가 생겨나는데, 그리고 나서 R에서는 이렇게 써 주면 된다.

 

> system('pdftotext -enc UTF-8 report.pdf')


3) 위에 작업이 성공했으면 TXT 파일이 생겼을 테니 readLines() 함수로 TXT파일을 불러들인다.

 

> words<-readLines("report.txt",encoding="UTF-8")
Posted by jujaeuk
,