PDFMiner
PyMuPDF
PyPDF2
tika
4가지의 라이브러리 활용 결과로 PyMuPDF가 파싱 속도가 굉장히 빠르고 좋다.
약 300개 정도의 파일과 다양한 속성의 pdf를 변환하기에 PyPDF2 및 PyMuPDF 정도가 적당하고 Light하게 사용하려면 PyMuPDF, 암호화된 파일까지 풀어서 파싱하려면 PyPDF2가 좋다.
PDFMiner 활용 시 문제가 되는 부분은 struct unpack 부분이다.
대부분의 사용자들에게서 나타나는 문제인데 format이 다르니 unpack 시 문제가 생긴다고 제작자 comment가 있다.
하여 필요 시 cmapdb.py 파일을 직접 커스터마이징 해야 할 것.
## IdentityCMap
##
class IdentityCMap(CMapBase):
def decode(self, code):
n = len(code)//2
if n:
- return struct.unpack('>%dH' %n, code)
+ return struct.unpack_from('=%dH' % n, code)
else:
return ()
필요에 의해 수정할 필요가 있으나 사실 파싱 속도가 많이 느린 편이어서 권장하는 라이브러리는 아니다.
빠르게 파싱하려면 위 언급한 2가지 라이브러리를 활용하시길. tika는 Apache 서버에 연결되고 서버-클라 방식으로 동작하니 이 또한 네트워크가 병맛일 땐 어렵겠다 싶었다. (초기 접속이 좀 잘 안됨)
추가로 도움될만한 사이트 링크: https://stackabuse.com/working-with-pdfs-in-python-reading-and-splitting-pages/