【问题标题】:Parse online PDF file with Python and PDFMiner使用 Python 和 PDFMiner 解析在线 PDF 文件
【发布时间】:2019-01-19 17:39:39
【问题描述】:

如何使用 Python 解析在线 PDF 文件?

我只需要第一页的第二行。我需要在不下载文件的情况下执行此操作,并且我使用的是 Python 3.5

我尝试过类似的方法,但没有成功:Using PDFMiner (Python) with online pdf files. Encode the url?

from pdfminer.pdfparser import PDFParser
import urllib.request
from io import StringIO
import io

url = 'url_with_the_pdf'

open = urllib.request.urlopen(url).read()

memoryFile = io.StringIO(open)

parser = PDFParser(memoryFile)

我收到此错误:

memoryFile = io.StringIO(open) TypeError: initial_value must be str or None, 
not bytes

【问题讨论】:

  • 你用的是什么版本的python? python3.6中的答案发生了变化,允许loads(bytes)。如果您需要.replace("'", '"'),我也怀疑您实际上没有json
  • 我正在使用 3.6 。所以我不需要行 my_json = data.decode('utf-8').replace("'", '"') ??
  • If the data being deserialized is not a valid JSON document, a JSONDecodeError will be raised. -- docs.python.org/3/library/json.html#json.JSONDecodeError 解码器可能遇到了一个用单引号括起来的字符串值,因为您调用了replace 并且吓坏了,因为单引号没有将字符串封装在 JSON 中.您最好发布您尝试解析的文档,以便我们看到它。
  • 可以传给ocr,pdf转成图片,ocr可以区分图片

标签: python parsing pdf


【解决方案1】:

在 Python 3 中使用io.BytesIO,即

memoryFile = io.BytesIO(open)

详情:https://docs.python.org/3.0/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit

...导入io 模块并分别使用io.StringIOio.BytesIO 用于文本和数据

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2014-05-13
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多