在 PDF 内容能被选中复制的情况下提取其中文本

需要提前安装好 pdfminer 库:pip install pdfminer

直接给出代码:

from io import StringIO
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfinterp import PDFResourceManager, process_pdf

def read_pdf(pdf):
    """
    读取pdf文件,获取所有内容
    """
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, laparams=laparams)
    process_pdf(rsrcmgr, device, pdf)
    device.close()
    content = retstr.getvalue()
    retstr.close()
    return str(content)
	
if __name__ == '__main__':
    with open(r'C:\XXX.pdf', "rb") as my_pdf:
        print(read_pdf(my_pdf))

对于有一定规律的固定文本段,可以考虑利用正则来进行提取。