【问题标题】:Clarifai creating a text recogniser from imageClarifai 从图像创建文本识别器
【发布时间】:2021-04-07 20:52:37
【问题描述】:

我是 clarifai api 的新手,并形成了一些在线可用的资源我有以下代码,我实际上想使用 clear api 从图像中提取文本。我正在使用 python 澄清

这里的 key-1 我复制了一个像 89daf...xxxxxxx...88b3 这样的数字,形成应用程序的 API 部分。

from clarifai_grpc.channel.clarifai_channel import ClarifaiChannel
from clarifai_grpc.grpc.api import resources_pb2, service_pb2, service_pb2_grpc
from clarifai_grpc.grpc.api.status import status_pb2, status_code_pb2

channel = ClarifaiChannel.get_grpc_channel()

stub = service_pb2_grpc.V2Stub(channel)

metadata = (('authorization', 'Key 89daf...xxxxxxx...88b3'),)

with open("{YOUR_IMAGE_FILE_LOCATION}".format(YOUR_IMAGE_FILE_LOCATION="images/hotel1.jpg"), "rb") as f:
    file_bytes = f.read()


post_workflows_response = stub.PostWorkflows(
    service_pb2.PostWorkflowsRequest(
      workflows=[
        resources_pb2.Workflow(
          id="my-custom-workflow",
          nodes=[
            resources_pb2.WorkflowNode(
              id="food-concepts",
              model=resources_pb2.Model(
                id="bd367be194cf45149e75f01d59f77ba7",
                model_version=resources_pb2.ModelVersion(
                  id="dfebc169854e429086aceb8368662641"
                )
              )
            ),
            resources_pb2.WorkflowNode(
              id="general-concepts",
              model=resources_pb2.Model(
                id="aaa03c23b3724a16a56b629203edc62c",
                model_version=resources_pb2.ModelVersion(
                  id="aa9ca48295b37401f8af92ad1af0d91d"
                )
              )
            ),
          ]
        )
      ]
    ),
    metadata=metadata
)

if post_workflows_response.status.code != status_code_pb2.SUCCESS:
    raise Exception("Post workflows failed, status: " + post_workflows_response.status.description)


post_workflow_results_response = stub.PostWorkflowResults(
    service_pb2.PostWorkflowResultsRequest(
        workflow_id="my-custom-workflow",
        inputs=[
            resources_pb2.Input(
                data=resources_pb2.Data(
                    image=resources_pb2.Image(
                        url="https://samples.clarifai.com/metro-north.jpg"
                    )
                )
            )
        ]
    ),
    metadata=metadata
)
if post_workflow_results_response.status.code != status_code_pb2.SUCCESS:
    raise Exception("Post workflow results failed, status: " + post_workflow_results_response.status.description)

# We'll get one WorkflowResult for each input we used above. Because of one input, we have here
# one WorkflowResult.
results = post_workflow_results_response.results[0]

# Each model we have in the workflow will produce one output.
for output in results.outputs:
    model = output.model

    print("Predicted concepts for the model `%s`" % model.name)
    for concept in output.data.concepts:
        print("\t%s %.2f" % (concept.name, concept.value))

我没有得到结果。请帮帮我。使用浏览器,我添加了一个新应用程序,并在应用程序中选择 Visual Text Recognition 作为模型

当我上传图片时,也在网站中,在资源管理器窗口中,我看到了正确的答案。

请帮忙改正代码。

【问题讨论】:

    标签: python clarifai


    【解决方案1】:

    我不是 100% 确定你想用上面的代码做什么,或者我是否遗漏了什么。

    为什么要调用 2 个工作流,为什么要调用一个工作流?

    Visual Recognition 模型是 Clarifai 的内置模型。您可以简单地调用 predict 端点并将 model_id 替换为“9fe78b4150a52794f86f237770141b33”

    如果您想发送带有本地图像的请求,这可以帮助您:

    with open("{YOUR_IMAGE_FILE_LOCATION}", "rb") as f:
        file_bytes = f.read()
    
        post_model_outputs_response = stub.PostModelOutputs(
            service_pb2.PostModelOutputsRequest(
                model_id="9fe78b4150a52794f86f237770141b33",
                inputs=[
                    resources_pb2.Input(
                        data=resources_pb2.Data(
                            image=resources_pb2.Image(
                                base64=file_bytes
                        )
                    )
                )
            ]
        ),
        metadata=metadata
    )
    
    if post_model_outputs_response.status.code != status_code_pb2.SUCCESS:
        raise Exception("Post model outputs failed, status: " + 
        post_model_outputs_response.status.description)
    
    # Since we have one input, one output will exist here.
    output = post_model_outputs_response.outputs[0]
    
    print("Predicted concepts:")
    for concept in output.data.concepts:
        print("%s %.2f" % (concept.name, concept.value))
    

    【讨论】:

      猜你喜欢
      • 2018-01-12
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 2012-03-16
      • 2018-05-07
      • 2014-10-09
      • 1970-01-01
      相关资源
      最近更新 更多