한글파일(.hwp) 파일을 python 분석에 사용하기 위하여 텍스트 파일(.txt)로 변환해야 하는 경우가 있습니다.
이를 위한 두가지 방법에 대해 알아보겠습니다.
1. olefile
먼저 한글에서 테스트 파일을 하나 생성해줍니다. (test.hwp)
다음으로 olefile을 임포트 하여 hwp안의 내용을 읽습니다.
import olefile
f = olefile.OleFileIO('test.hwp') # olefile로 한글파일 열기
encoded_text = f.openstream('PrvText').read() # PrvText 스트림 안의 내용 꺼내기 (유니코드 인코딩 되어있음)
decoded_text = encoded_text.decode('utf-16') # 유니코드이므로 utf-16으로 디코딩
print(decoded_text)
결과는 다음과 같이 나옵니다.
파이썬으로
한글
읽기
olefile!
이것을 테스트에서 제 문제로 확장하려하니 문제가 생기더군요.
읽어야 하는 hwp는 10페이지가 넘는데 한 페이지의 반쪽도 못읽었습니다ㅠㅠ
해당 이슈는 https://sir.kr/qa/381466 에서 해결책을 찾을 수 있었는데 저는 어렵게 느껴져서 다른 모듈을 통해 접근하는 방법을 선택했습니다.
2. pyhwp
자세한 내용은 아래 공식문서를 참조하시길 바랍니다.
https://pyhwp.readthedocs.io/en/latest/converters.html#hwp5txt-text-conversion
1. pyhwp 파일 설치
cmd 혹은 anaconda prompt에서 pyhwp를 설치해줍니다.
pip install --user --pre pyhwp # Install pyhwp into user's home directory
2. 프롬포트에서 사용
저는 이 부분에서 난항을 겪었는데요 일단 사용법은 다음과 같습니다.
hwp5txt --output "변환된_텍스트_파일명" "변환하고_싶은_한글파일.hwp"
추가로 -output을 따로 지정해주지 않는다면 프롬프트에 텍스트가 출력된다고 합니다.
저는 아무리 위 코드를 프롬포트에 쳐도 'hwp5txt'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다. 라는 에러가 나더라구요!!ㅠㅠ
사실 답은 warning에 나와있었습니다. 처음 pyhwp를 설치할 때 warning을 잘 살펴보면 hyp5txt.exe, ... 등은 다른 폴더에 생성이 되어있다고 뜨죠?
따라서 위치를 cd 명령어로 옮겨줍니다.
그 후 다음 코드를 프롬포트에 사용하면 잘 나오게 됩니다! 이 때 주의할점은 경로를 처음부터 다 잘 작성해주세요 :)
hwp5txt --output "변환된_텍스트_파일명" "변환하고_싶은_한글파일.hwp"
그러고나면 변환하고싶은 한글파일이 있는 경로에 .txt 파일이 생성된 것을 확인할 수 있습니다.
0. Reference
'Language > Python' 카테고리의 다른 글
파이썬 자료형 - 정수형, 실수형 (2) | 2023.01.17 |
---|---|
[Pytorch] Freeze Network: no_grad, requires_grad 차이 (0) | 2022.03.14 |
댓글