Skip to main content
Open In Colab在 GitHub 上打开

Google Cloud Document AI

Document AI 是 Google Cloud 的一个文档理解平台,用于将文档中的非结构化数据转换为结构化数据,使其更易于理解、分析和使用。

了解更多信息:

该模块包含一个PDF基于 Google Cloud 的 DocAI 的解析器。

您需要安装两个库才能使用此解析器:

%pip install --upgrade --quiet  langchain-google-community[docai]

首先,您需要设置 Google Cloud Storage (GCS) 存储桶并创建自己的光学字符识别 (OCR) 处理器,如下所述:https://cloud.google.com/document-ai/docs/create-processor

GCS_OUTPUT_PATH应该是 GCS 上文件夹的路径(以gs://) 和PROCESSOR_NAME应如下所示projects/PROJECT_NUMBER/locations/LOCATION/processors/PROCESSOR_IDprojects/PROJECT_NUMBER/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION_ID.您可以通过编程方式获取它,也可以从Prediction endpoint部分的Processor details选项卡中。

GCS_OUTPUT_PATH = "gs://BUCKET_NAME/FOLDER_PATH"
PROCESSOR_NAME = "projects/PROJECT_NUMBER/locations/LOCATION/processors/PROCESSOR_ID"
from langchain_core.document_loaders.blob_loaders import Blob
from langchain_google_community import DocAIParser
API 参考:Blob | DocAIParser 浏览器

现在,创建一个DocAIParser.

parser = DocAIParser(
location="us", processor_name=PROCESSOR_NAME, gcs_output_path=GCS_OUTPUT_PATH
)

在此示例中,您可以使用上传到公有 GCS 存储桶的 Alphabet 收入报告。

2022Q1_alphabet_earnings_release.pdf

将文档传递给lazy_parse()method 设置为

blob = Blob(
path="gs://cloud-samples-data/gen-app-builder/search/alphabet-investor-pdfs/2022Q1_alphabet_earnings_release.pdf"
)

我们将每页获得 1 个文档,总共 11 个:

docs = list(parser.lazy_parse(blob))
print(len(docs))
11

您可以逐个运行 blob 的端到端分析。如果你有很多文档,那么将它们批处理在一起可能是一种更好的方法,甚至可以将解析从处理解析结果中分离出来。

operations = parser.docai_parse([blob])
print([op.operation.name for op in operations])
['projects/543079149601/locations/us/operations/16447136779727347991']

您可以检查作是否已完成:

parser.is_running(operations)
True

当它们完成后,您可以解析结果:

parser.is_running(operations)
False
results = parser.get_results(operations)
print(results[0])
DocAIParsingResults(source_path='gs://vertex-pgt/examples/goog-exhibit-99-1-q1-2023-19.pdf', parsed_path='gs://vertex-pgt/test/run1/16447136779727347991/0')

现在我们终于可以从解析的结果中生成 Documents:

docs = list(parser.parse_from_results(results))
print(len(docs))
11