gpt4 book ai didi

python - 使用 Dataflow 进行图像预处理

转载 作者:太空狗 更新时间:2023-10-30 01:36:09 25 4
gpt4 key购买 nike

任务:我要运行一个 ETL 作业,该作业将从 GCS 中提取 TIFF 图像,结合使用开源计算机视觉工具(例如 OpenCV + Tesseract)将这些图像转换为文本,并最终加载将数据导入 BigQuery

问题:我正在尝试使用 Dataflow 执行 ETL 作业,因为我有数百万个图像(每个图像都是一个单独的文件/blob)并且我想扩展到数百台机器。但是,我遇到了有关下载图像的最佳方式的数据流问题(将在下面更详细地描述)。

问题:最终我试图确定:

1) 数据流是执行此操作的最佳解决方案吗?我考虑过的替代方案是在大型机器上运行多线程作业。还有其他我应该考虑的选择吗?

2) 如果数据流是最佳解决方案,那么我应该如何具体处理下载数百万张图片(以便我可以通过转换运行它们)?

技术挑战:

以下帖子Recommended solution建议在 DoFn 中使用 beam.io.gcp.gcsio.GcsIO().open(filepath, 'r') 从 GCS 下载图像。
我尝试使用 beam.io.gcp.gcsio.GcsIO().open(filepath, 'r') 沿着这条路走下去,但是,我无法打开图像。该问题在此处描述:IO.BufferReader issue .

使用 DirectRunner 时,我可以使用此客户端 api from google.cloud import storage 下载图像文件,我可以毫无问题地打开和预处理图像。但是,在使用数据流运行器时,我遇到了依赖性问题,AttributeError: 'module' object has no attribute 'storage'

也就是说,如果 Dataflow 是最佳解决方案,那么下载和处理数百万张图片的最佳方法是什么?

最佳答案

您的想法是正确的。看来你遇到了两个问题:

  • 对于 io.BufferedReader 问题,您需要添加一个接口(interface),允许您在 Tiff 文件中查找,因为您正确找到了 in the question。 .

  • 似乎使用 google.cloud.storage 的问题是依赖项在数据流环境中不可用。要添加此依赖项,请查看 Managing Python pipeline dependencies在 Beam 文档中。

主要思想是您可以使用传入的 --requirements_file reqs.txt 文件运行您的管道,列出您想要添加的所有额外依赖项。

关于python - 使用 Dataflow 进行图像预处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53395999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com