我对谷歌云视觉应用编程接口相当陌生,所以如果有一个明显的答案,我很抱歉。我注意到,对于一些图像,我在谷歌云视觉应用编程接口拖放(https://cloud.google.com/vision/docs/drag-and-drop)和python中的本地图像检测之间得到不同的OCR结果。
我的代码如下
import io
# Imports the Google Cloud client library
from google.cloud import vision
from google.cloud.vision import types
# Instantiates a client
client = vision.ImageAnnotatorClient()
# The name of the image file to annotate
file_name = "./test0004a.jpg"
# Loads the image into memory
with io.open(file_name, 'rb') as image_file:
content = image_file.read()
image = types.Image(content=content)
response = client.text_detection(image=image)
texts = response.text_annotations
print('Texts:')
for text in texts:
# print('\n"{}"'.format(text.description.encode('utf-8')))
print('\n"{}"'.format(text.description.encode('ascii','ignore')))
vertices = (['({},{})'.format(vertex.x, vertex.y)
for vertex in text.bounding_poly.vertices])
print('bounds: {}'.format(','.join(vertices)))
突出显示这一点的示例图像附在示例图像中
上面的python代码不会返回任何内容,但在浏览器中使用拖放功能,它会正确地将“2340”标识为文本。python和浏览器不应该返回相同的结果吗?。如果没有,为什么没有?,我需要在代码中包含其他参数吗?。
这里的问题是您正在使用TEXT_DETECTION
而不是DOCUMENT_TEXT_DETECTION
,这是您共享的拖放示例页中使用的功能。
通过更改方法(改为document\u text\u detection()
),您应该可以获得所需的结果(我已经用您的代码对其进行了测试,它确实有效):
# Using TEXT_DETECTION
response = client.text_detection(image=image)
# Using DOCUMENT_TEXT_DETECTION
response = client.document_text_detection(image=image)
尽管这两种方法都可以用于OCR,如文档中所示,文档_文本_检测
针对密集文本和文档进行了优化。您共享的图像质量不高,文本也不清晰,因此对于这种类型的图像,DOCUMENT\u text\u DETECTION
比text\u DETECTION
提供了更好的性能。
请参阅其他一些示例,其中DOCUMENT_TEXT_DETECTION
比TEXT_DETECTION
工作得更好。无论如何,请注意,它可能并不总是这种情况,并且TEXT_DETECTION
在某些条件下可能仍然具有更好的结果:
本文向大家介绍如何实现浏览器内多个标签页之间的通信?相关面试题,主要包含被问及如何实现浏览器内多个标签页之间的通信?时的应答技巧和注意事项,需要的朋友参考一下 通过WebSocket或SharedWorker把客户端和服务器端建立socket连接,从而实现通信;也可以调用localstorge、cookies等本地存储方法
问题内容: JVM实现在哪些方面有所不同(许可除外)?每个JVM是否都为通用处理实现类型清除? 之间的区别在哪里: JRockit IBM JVM SUN JVM Open JDK power failure Kaffi .....处理其中之一的尾部呼叫优化吗? 问题答案: JVM实现在实现JIT编译,优化,垃圾回收,支持的平台,支持的Java版本等方面可以有所不同。它们都必须满足一组功能和行为,
在swift中似乎有两个相等运算符:双相等()和三相等(),这两者有什么区别?
问题内容: 在同一浏览器的选项卡/窗口之间进行JavaScript通信的最可靠方法是什么?例如,当选项卡2开始播放音频时,选项卡1以某种方式知道这一点并可以暂停其播放器。 我正在建立一个带有音乐播放器的网站…因此,如果您现在打开该网站的两个标签,则可以同时在两者上播放音乐。这显然是不好的,所以我正在尝试寻找解决方案。 有任何想法吗?谢谢 问题答案: 这是一个旧的答案,我建议使用此处描述的现代版本:
在进行Hyperledger fabric设置时,我们为组织创建加密材料并提及用户,相应地生成用户加密材料,用于在通过CLI进行日志记录时调用链码。另外,当我们尝试通过SDK连接网络时,我们也需要注册和注册用户来连接网络。那么,这两种用户的区别是什么呢?