【发布时间】:2019-11-08 14:35:49
【问题描述】:
我正在尝试为我自己的 pdf 文件制作一个原始爬虫。为此,我使用Pypdf 提取数据(客户、产品、金额等)并使用该数据。
现在,我有了代码,它非常简单,但是当我在谷歌的一些随机 PDF 上尝试它并且它工作时,它似乎无法从我的 PDF 中提取任何内容。我尝试了我的多个文档,pdf,不工作,互联网上的随机 pdf 工作。
我使用 Spyder。
下面是我正在使用的代码:
import PyPDF2 as p2
PDFfile=open("pdf_barrierefrei.pdf","rb") # Random PFD off the Internet
pdfread = p2.PdfFileReader(PDFfile)
x = pdfread.getPage(0)
print(x.extractText())
PDFfile.close
PDFfile=open("2.pdf","rb")
pdfread = p2.PdfFileReader(PDFfile) # My PDF
y = pdfread.getPage(0)
print(y.extractText())
PDFfile.close
我的预期输出是我的 PDF 中的一串混搭数据,例如客户、我的姓名、日期等,然后我对其进行排序和清除。
实际结果是:
" [b'\n', b'endobj\n', b'11 0 obj\n', b'>\n', b'stream\n', b'/CIDInit /ProcSet findresource begin 12 dict 开始 begincmap /CIDSystemInfo > def /CMapName /Adobe-Identity-UCS def /CMapType 2 def 1 begincodespacerange endcodespacerange 49 beginbfchar endbfchar endcmap CMapName currentdict /CMap defineresource pop end end \n', b'endstream\n', b'endobj\n', b'10 0 obj\n', b'[ 3 3 226 4 4 605 17 17 560 18 18 529 28 28 487 38 38 458 39 39 637 44 44 630 47 47 266 62 62 422 69 69 658 75 75 676 87 87 532 90 90 562 94 94 472 100 100 495 104 104 652 115 115 591 258 258 493 271 271 536 272 272 418 282 282 536 286 286 503 296 296 316 336 336 474 346 346 536 349 349 245 364 364 479 373 373 813 374 374 536 381 381 537 396 396 355 400 400 398 410 410 346 437 437 536 853 853 257 855 855 275 856 856 267 876 876 429 882 882 306 934 934 506 1004 1004 506 1005 1005 506 1006 1006 506 1008 1008 506 1009 1009 506 1010 1010 506 1011 1011 506 1013 1013 506]\n', b'endobj\n', b'7 0 obj\n', b'[ -813 -268 813 952 ]\n', b'endobj\n', b'8 0 obj\n', b'813\n', b'endobj\n', b'19 0 obj\n', b'>\n', b'stream\n', b'/CIDInit /ProcSet findresource 开始 12 dict begin begincmap /CIDSystemInfo > def /CMapName /Adobe-Identity-UCS def /CMapType 2 def 1 begincodespacerange endcodespacerange 63 beginbfchar endbfchar endcmap CMapName currentdict /CMap defineresource pop end end \n', b'endstream\n', b'endobj\n', b'18 0 obj\n', b'[ 3 3 226 4 4 578 17 17 543 18 18 533 24 24 615 38 38 459 39 39 630 44 44 623 47 47 251 60 60 519 62 62 420 68 68 854 69 69 645 75 75 662 87 87 516 90 90 542 94 94 459 100 100 487 104 104 641 115 115 567 116 116 889 127 127 468 258 258 479 271 271 525 272 272 422 282 282 525 286 286 497 296 296 305 336 336 470 346 346 525 349 349 229 364 364 454 367 367 229 373 373 798 374 374 525 381 381 527 393 393 525 396 396 348 400 400 391 408 408 527 410 410 334 437 437 525 448 448 451 449 449 714 460 460 395 853 853 249 856 856 252 876 876 386 882 882 306 923 923 894 934 934 506 1004 1004 506 1005 1005 506 1006 1006 506 1007 1007 506 1008 1008 506 1009 1009 506 1010 1010 506 1011 1011 506 1012 1012 506 1013 1013 506 1081 1081 714 1085 1085 498 ]\n', b'endobj\n', b'15 0 obj\n', b'[ -894 -268 894 952 ]\n', b'endobj\n', b'16 0 obj\n', b'894\n', b'endobj\n', b'2 0 obj\n', b'>\n', b'endobj\n', b'1 0 obj\n', b'>\n', b'endobj\n', b'23 0 obj\n', b'>\n', b'endobj\n', b'xref\n', b'0 24\r\n', b'0000000000 65535 f\r\n', b'0000585703 00000 n\r\n', b'0000585644 00000 n\r\n', b'0000581675 00000 n\r\n', b'0000000009 00000 n\r\n', b'0000148586 00000 n\r\n', b'0000148612 00000 n\r\n', b'0000583508 00000 n\r\n', b'0000583545 00000 n\r\n', b'0000148635 00000 n\r\n', b'0000582918 00000 n\r\n', b'0000581854 00000 n\r\n', b'0000355352 00000 n\r\n', b'0000355825 00000 n\r\n', b'0000355852 00000 n\r\n', b'0000585586 00000 n\r\n', b'0000585624 00000 n\r\n', b'0000355876 00000 n\r\n', b'0000584824 00000 n\r\n', b'0000583564 00000 n\r\n', b'0000577725 00000 n\r\n', b'0000578203 00000 n\r\n', b'0000581590 00000 n\r\n', b'0000585752 00000 n\r\n', b'预告片\n', b'>\n', b'startxref\n', b'585949\n', b'%%EOF\n']"
或半页什么都没有,只是“In [40]:”,然后是字面上的 20 句什么都没有,没有错误或任何东西
从随机 Pdf 得到的输出:
"Aktion Mensch e.V. Fachartikel —PDF-Dokume....
16.10.03 作者:Roland Heuwinkel 17. Oktober 2003 Seite 1 von 24"
这只是一些随意的涂鸦,不要关心内容,只要它给我一些文字就行了。
我真的是编码新手,我不知道从哪里开始,因为它们都是 PDF。我只是想知道是不是因为我使用“打印到 PDF”来创建它们?
【问题讨论】:
-
请给我们样本 pdf,我们会看一看。查看您的输出,看起来 pdf 是图像而不是可读文本。
-
我该怎么做,它不允许我上传一个wetransfer链接,这里有什么好的网站可以分享吗?
-
我正在使用 jupyther notebook,我可以看到来自 pdf_barrierefrei.pdf 的文本。但是从 2.pdf 开始,我只看到空白,因为它是一个图像表。我会使用 adobe 或 tika 将其转换为文本
-
hmm 是的,但是如果添加了新的 PDF,我需要程序不断抓取 PDF 并添加数据,有没有办法在 Python 中做到这一点?此外,如果我在那里校准错误,我会查看打印到 PDF,因为我在 Excel 中制作发票,然后使用“打印到 PDF”将其转换为 PDF,所以这一定是那里的问题......如果它会制作正确的PDF然后我不会有这个问题
-
我也在工作中使用 PyPDF2,但为了确保所有 pdf 都可读,我使用了 adobe pro reader。您可以试用 30 天。 (注:我不认可任何产品,这仅基于我的工作经验)。祝你好运!