PDF를 워드 파일로 변환하고 싶어서 찾아보니
오픈소스도 있고 유료 솔루션도 있었다.
1. pdf2docx
오픈소스는 pdf2docx로
<User Guide>
https://pdf2docx.readthedocs.io/en/latest/
<Github>
https://github.com/ArtifexSoftware/pdf2docx
<참조 링크>
설치는 pip 인스톨로 가능하며
PIP install pdf2docx
코드는 위에 참조한 블로그에 간단한 오류가 있어서
수정한 코드는
from pdf2docx import Converter
import sys
import re
if len(sys.argv) == 1 :
print("USAGE: %s file.pdf" % sys.argv[0])
exit()
print(sys.argv)
pdf_file = sys.argv[1]
docx_file = re.sub(".pdf", ".docx", pdf_file, flags=re.I)
conv = Converter(pdf_file)
conv.convert(docx_file, start=0, end=None)
conv.close()
무료이지만 별도 제약없이 AGPL로 제공되고 있다.
테스트했던 대상 파일이 42페이지 였는데 해당 페이지 모두 원본 편집양식과 유사하게 변환되었지만
한 페이지를 차지했던 큰 이미지 한장이 변환과정에서 빠져 있었다.
2. aspose
한 페이지를 차지했던 큰 이미지 한장이 변환과정에서 빠지게 되어 다른 솔루션을 찾아보게 되었다.
유료 솔루션은 PyPI에서 호스팅이 하고 있고 pip 설치가 가능해서 사용해 보았다.
(라이선스가 없으면 evaluation버전으로 워터마크와 변환가능한 페이지 수에 제약이 있다.)
평가판에서는 워터마크는 배경과 바닥글 두가지 형태로 생기며 변환 가능한 페이지 수는 20페이지였다.
https://blog.aspose.com/ko/words/convert-pdf-to-word-in-python/
의 내용을 참조했다.
내가 작성했던 코드는
import aspose.words as aw
import sys
import re
if len(sys.argv) == 1 :
print("USAGE: %s file.pdf" % sys.argv[0])
exit()
print(sys.argv)
pdf_file = sys.argv[1]
# load the PDF file
doc = aw.Document(pdf_file)
# convert PDF to Word DOCX format
doc.save("aw_test.docx")
판매사 예제에는 좀더 디테일한 변환 설정이 가능한 것으로 나왔지만 나는 말그대로 평가를 목적으로 하니 대상 파일에 대한 시험 변환으로 만족했다.
변환결과 워터마크나 다른 내용을 어쩔 수 없다고 하더라도 원본의 서식이 유지되지 않는 경우가 있고 원하던 이미지가 담기긴 했지만 다른 이미지가 빠지는 현상을 발견하게 되었다. 일부 부분적으로 좀더 원본에 가까운 부분도 있었기 때문에 확실하게 한쪽이 우월하다고 보긴 어려웠지만 이정도 퀄리티라면 굳이 유료버전을 선택할 이유는 없어보인다.
요즘 PDF 술루션이 좋아서 빠진 이미지는 다른 PDF 솔루션으로 추출하면 될 것 같다.
특히, pdf2docx 오픈소스가
MuPDF라는 유료 PDF 솔루션을 판매하는 회사에서 만든 오픈 소스라 신뢰성이 있다고 느껴진다.
-----
테스튼는 NIST AI RMF에 대한 PDF 문서를 대상으로 진행했고 변환 결과를 첨부해 두니 참고해보기 바란다.
'Python' 카테고리의 다른 글
python + postgresql 사용하기 (0) | 2024.06.19 |
---|---|
pyodbc를 이용한 MS ACCESS mdb 다루기 (1) | 2022.09.29 |
파이썬에서 섀넌 앤트로피(정보 앤트로피) 구현하기(Shannon's Entropy with Python) (0) | 2021.03.29 |
[PyQt] 계산기 프로그램 (후위 표기법) (0) | 2021.03.15 |
파이썬에서 PE 파일 분석 (imports) (0) | 2021.02.17 |