【问题标题】:google-cloud-vision how to read pdf filegoogle-cloud-vision 如何读取 pdf 文件
【发布时间】:2018-08-24 01:45:35
【问题描述】:

我正在使用 Google OCR API,我正在读取图像和 PDF 文件,我能够读取和处理图像文件,但是,对于 PDF 文件,根据Google OCR API documentation,他们提到我们需要存储我们的文档导入 Google Cloud 服务。

话虽如此,由于数据机密性,我无法将我的数据存储到 Google Cloud 中,我想从本地系统上传我的 PDF 以便从 PDF 文件中读取文本。是否可以从本地磁盘上传 PDF 然后进行处理,而不是将文件上传到 Google Cloud?

【问题讨论】:

  • 我看到你是新来的,欢迎。我提出了一个答案,如果它解决了您的问题,请考虑accept/upvote,以便其他可能有相同问题的人可以看到它有效。再次,欢迎来到 SO。
  • 一个简单的解决方案是使用在线 PDF 到 JPG 转换器将您的 pdf 文件转换为 jpg,然后发送该图像文件。您应该得到与发送 PDF 相同的结果。我使用ilovepdf.com/pdf_to_jpg 来规避我遇到的同样问题。

标签: google-cloud-vision


【解决方案1】:

正如您所说,在本地无法做到这一点。我代表您提交了功能请求[1],以便您在那里关注更新。

无论如何,我有一个可能的解决方法可以满足您的数据保密意识。它包括使用云存储客户端库[2] 来上传和删除这些文件:

  1. 您在本地拥有 PDF 文件,但没有包含它的存储桶。
  2. 上传到桶[3]
  3. 使用该存储桶+文件 URI 通过 Cloud Vision API 读取它并将结果存储在存储桶中
  4. 下载结果文件到本地机器[4]
  5. 从存储桶中删除 PDF 文件和结果文件[5]

只要您不介意将这些文件放在存储桶中一小段时间,这应该可以工作。

【讨论】:

    【解决方案2】:

    本地存储文件的代码不在文档特定部分下,而是在此处:https://cloud.google.com/vision/docs/file-small-batch

    我在下面总结了 GCP 和本地选项的代码。

    # imports
    from google.cloud import vision
    from google.cloud.vision_v1 import enums
    import io
    
    # Set up Vision API
    from google.cloud import vision
    client = vision.ImageAnnotatorClient()
    features = [{"type": enums.Feature.Type.DOCUMENT_TEXT_DETECTION}]
    mime_type = 'application/pdf'
    
    # from GCP
    gcs_source_uri = "gs://bk-bucketname/example.pdf"
    gcs_source = vision.types.GcsSource(uri=gcs_source_uri)
    input_gcp = vision.types.InputConfig(gcs_source=gcs_source, mime_type=mime_type)
    
    # from local
    file_path = "./example.pdf"
    with io.open(file_path, "rb") as f:
         content = f.read()
    input_local = {"mime_type": mime_type, "content": content}
    
    # send the api request
    pages = [1] # list of page#s, 5max for online / 2000max for offline/async
    requests = [{"input_config": input_local, "features": features, "pages": pages}]
    response = client.batch_annotate_files(requests)
    

    【讨论】:

      【解决方案3】:

      您可以将 PDF 拆分为页面,将它们单独发送到在线 OCR API,然后按顺序合并结果。或者,您可以依赖可以为您执行此操作的 OCR 服务,例如 https://base64.ai/demo/document-processing/ocr

      【讨论】:

        猜你喜欢
        • 2019-02-05
        • 2019-02-19
        • 2019-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-22
        相关资源
        最近更新 更多