본문 바로가기

Dev. Language/Python

PDF Parsing 라이브러리 소개

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/