google-cloud-vision如何阅读pdf文件

时间:2018-08-24 01:45:36

标签: google-cloud-vision

我正在使用Google OCR API,并且正在读取图像和PDF文件,可以读取和处理图像文件,但是对于Google OCR API documentation的PDF文件,他们提到我们需要将我们的文档存储到Google Cloud服务中。

话虽如此,由于数据的机密性,我无法将数据存储到Google Cloud中,并希望从本地系统上载PDF以便从PDF文件读取文本。我需要您的输入,是否可以从本地磁盘上传PDF,然后进行处理,而不是将文件上传到Google Cloud? 在这方面,您的合作将受到高度赞赏。

关于, Zeeshan

3 个答案:

答案 0 :(得分:5)

如您所说,不可能在本地进行。我代表您提交了功能请求[1],让您关注其中的更新。

无论如何,我有一个可能的解决方法,可以满足您的数据机密性意识。它包括使用Cloud Storage Client库[2]上传和删除这些文件:

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

只要您不介意在短时间内将这些文件存储在存储桶中,此方法就应该起作用。

答案 1 :(得分:0)

本地存储文件的代码不在文档特定部分下,而是在这里: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)

答案 2 :(得分:0)

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