我正在使用Google OCR API,并且正在读取图像和PDF文件,可以读取和处理图像文件,但是对于Google OCR API documentation的PDF文件,他们提到我们需要将我们的文档存储到Google Cloud服务中。
话虽如此,由于数据的机密性,我无法将数据存储到Google Cloud中,并希望从本地系统上载PDF以便从PDF文件读取文本。我需要您的输入,是否可以从本地磁盘上传PDF,然后进行处理,而不是将文件上传到Google Cloud? 在这方面,您的合作将受到高度赞赏。
关于, Zeeshan
答案 0 :(得分:5)
如您所说,不可能在本地进行。我代表您提交了功能请求[1],让您关注其中的更新。
无论如何,我有一个可能的解决方法,可以满足您的数据机密性意识。它包括使用Cloud Storage Client库[2]上传和删除这些文件:
只要您不介意在短时间内将这些文件存储在存储桶中,此方法就应该起作用。
答案 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