我的代码可以通过 Beautiful Soup 从网站上提取 400 多个 PDF。PyPDF2 将 PDF 转换为文本,然后将其保存为名为“output.jsonl”的 jsonlines 文件。
当我在未来的更新中保存新的 PDF 时,我希望 PyPDF 仅将新的 PDF 转换为文本并在 jsonlines 文件中附加该新文本,这正是我苦苦挣扎的地方。
jsonlines 文件如下所示:
{"id": "1234", "title": "Transcript", "url": "www.stackoverflow.com", "text": "200 pages worth of text"}
{"id": "1235", "title": "Transcript", "url": "www.stackoverflow.com", "text": "200 pages worth of text"}...
PDF 被命名为“1234”、“1235”等,并保存在 file_path_PDFs 中。我试图识别“id”是否是 jsonlines 文件中的值,那么 PyPDF2 不需要将其转换为文本。如果它不存在,则照常处理。
file_path_PDFs = 'C:/Users/.../PDFs/'
json_list = []
for filename in os.listdir(file_path_PDFs):
if os.path.exists('C:/Users/.../PDFs/output.jsonl'):
with jsonlines.open('C:/Users/.../PDFs/output.jsonl') as reader:
mytext = jsonlines.Reader.iter(reader)
for obj in mytext:
if filename[:-4] in mytext: #filename[:-4] removes .pdf from string
continue
else:
~convert to text~
with jsonlines.open('C:/Users/.../PDFs/output.jsonl', 'a') as writer:
writer.write_all(json_list)
照原样,我相信这段代码没有找到任何值,并且每次运行它时都会转换所有文本。显然,这是一个相当漫长的过程,每个文档跨越 200 或 300 页。