我正在从事一个GCP 文件AI项目。首先,让我说一下-- OCR工作得很好:-)。如果可能的话,我很想知道改进的可能性。
现在发生了什么
我编写了一个python模块,它将完成通过门户上传或由系统中的代理收集的tiff文件的OCR。该模块是以一种避免本地使用原始文件内容的方式编写的,因为该文件很容易在云桶中可用。但是,我必须付出的代价是使用batch_process_documents() API而不是process_document()。
a观察
这是一个显而易见的问题,因为如果文档是通过内联API提交的,那么大部分时间都会在不到5秒的时间内返回OCR。但是,批处理(带有一个文档:-\\)几乎每次花费超过45秒的时间。有时它会超过一分钟或更长时间。
我正在寻找一个解决方案,以减少OCR的通话时间。内联API不像我所知道的那样支持gcs,所以要么我需要下载内容,然后通过内联api上传它,然后做一个OCR,要么我需要忍受性能下降。
有没有处理过类似案件的人?或者是否有任何方法可以解决这个问题,而不用使用批处理api或下载内容?任何帮助都是非常感谢的。
发布于 2022-02-22 10:33:45
根据您的要求,因为您所关心的是在比较process和batchProcess方法对Document的响应时间时的延迟,因此使用单个文档,结果分别为5秒和45秒。
单个请求面向较小数量的数据,通常需要很小的时间来处理,但在处理大量数据时性能可能较低;另一方面,批处理请求面向处理更大数量的数据,这些数据量比单个请求具有更好的性能,但在处理少量数据时性能可能较低。
关于这两个方法调用的延迟问题,查看文档,我可以发现对于单个请求或同步("online")操作(即立即响应),文档数据是在内存中处理的,而不是保存到磁盘上的。随后,在异步脱机批处理操作中,文档将在磁盘中处理,因为该文件可能会显着地更大,无法在内存中容纳。这就是异步操作相对于同步操作花费大约10倍时间的原因。
这些方法调用中的每一个都有特定的用例,在这种情况下,选择使用哪个方法将依赖于对您更好的权衡。如果时间响应非常重要,并且希望尽快获得响应,则可以拆分文件以适应大小,并将请求作为同步操作进行,同时考虑到配额制和API的限制。
这个问题已经在这个问题跟踪器中提出了。我们目前不能提供一个ETA,但您可以跟踪问题跟踪器的进展,您可以通过引用此链接来“星光”问题以接收自动更新并使其具有吸引力。
https://stackoverflow.com/questions/71204952
复制相似问题