【问题标题】:Python - Convert TIFF, PDF etc. to JPEG in-memory for input to Google Cloud VisionPython - 将 TIFF、PDF 等转换为内存中的 JPEG 以输入到 Google Cloud Vision
【发布时间】:2017-12-29 15:37:54
【问题描述】:

我想使用 Google Cloud Vision 处理一些非 JPEG 图像文件,但 API 只接受某些格式(请参阅问题 Cloud Vision API - PDF OCR 并回答 https://cloud.google.com/vision/docs/supported-files)。

我可以使用 PIL 或类似的工具将 TIFF 转换为 JPEG 以供上传,但我希望尽可能避免使用临时文件。

那么,在 python 中,我如何转换内存中的 TIFF 以上传到 GCV? numpy 数组,base64,字符串..?

【问题讨论】:

  • 考虑写入字符串而不是磁盘文件:docs.python.org/2/library/stringio.html
  • BytesIO 代替字符串表示不是更符合逻辑吗?
  • @YvesDaoust 那么我究竟如何(示例代码)用于转换为 stringio/BytesIO,以及如何将其发送到 GCV?谢谢!
  • 很好,但我不认为这是一个不合理的要求。也不是直截了当的问题。作为一个编码网站,答案通常以代码的形式给出,不是吗?
  • 此外,GCV 文档很差/内部编写的 - stackoverflow 似乎是增加这一点的明显位置

标签: python image-processing jpeg python-imaging-library google-cloud-vision


【解决方案1】:

按照建议,对于 Python 3,您应该使用 StringIO 或 BytesIO。

看到这个问题:Python resize image and send to google vision function

请求字符串示例:

output = BytesIO()
image_object.save(output, 'JPEG', quality=90)
contents = output.getvalue()
output.close()
ctxt = b64encode(contents).decode()

request_string = [{
    'image': {'content': ctxt},
    'features': [{
        'type': 'TEXT_DETECTION',
        'maxResults': 1
        }]
}]

【讨论】:

  • 谢谢你——正是我想要的——对我来说非常不透明——会试一试:)
  • 注意质量设置。默认设置为 75,这可能会降低您的图像质量以及您从 Google 获得的后续结果。将其设置得太高会增加您的图片大小,并且您可能会达到 4MB 的图片大小限制。
  • 谢谢,确实,注意到了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-31
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多