我使用以下代码将 PDF 转换为文本文件。但是,我只对文档的正文感兴趣,没有数字、没有页码、没有表格、没有标题、没有公式等。
但它给了我一堆文本,其中一些是从表格或公式中提取的短行。我希望用户可以阅读生成的文本,而无需在文本模式下显示的内容。
另一个问题是它把句子分成多行,所以我会放宽句子的界限。我想有完整的句子没有中断。
我玩了一些选项,例如“all_text = False”,但没有成功。
import sys
from tqdm import tqdm
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
from pdfminer.layout import LAParams
import io
def pdfparser(pdf_file):
fp = open(pdf_file, 'rb')
rsrcmgr = PDFResourceManager()
retstr = io.StringIO()
codec = 'utf-8'
laparams = LAParams()
laparams.all_texts = False
laparams.detect_vertical = False
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
# Create a PDF interpreter object.
interpreter = PDFPageInterpreter(rsrcmgr, device)
# Process each page contained in the document.
password = ""
maxpages = 3
caching = True
pagenos=set()
imagewriter = None
for page in tqdm(PDFPage.get_pages(fp)):
interpreter.process_page(page)
text = retstr.getvalue()
text = text.replace("\\n","\n")
return text
if __name__ == '__main__':
text = pdfparser(sys.argv[1])
print(text)