开发者社区 > 视觉智能 > 文字识别 > 正文

文字识别OCR如何使用ocr服务返回的Json,生成带格式的文本?

文字识别OCR如何使用ocr服务返回的Json,生成带格式的文本?

展开
收起
青城山下庄文杰 2023-08-07 17:38:30 561 0
6 条回答
写回答
取消 提交回答
  • 十分耕耘,一定会有一分收获!

    楼主你好,阿里云文字识别OCR返回的是一段JSON数据,要生成带格式的文本需要对JSON数据进行解析。以下是Python示例代码,假设OCR服务返回的JSON数据保存在变量result中:

    import json
    
    # 解析JSON数据
    data = json.loads(result)
    
    # 获取文本块列表
    blocks = data["prism_wordsInfo"]
    
    # 根据每个文本块的位置信息,将文本块按照从上到下、从左到右的顺序排序
    blocks.sort(key=lambda x: (x["location"]["top"], x["location"]["left"]))
    
    # 生成带格式的文本
    text = ""
    for block in blocks:
        text += block["word"] + " "
        if block["location"]["width"] + block["location"]["left"] >= 1:
            text += "\n"
    print(text)
    

    该代码将OCR服务返回的JSON数据解析成文本块列表,然后按照从上到下、从左到右的顺序排序,并逐个输出每个文本块的内容,其中根据每个文本块的位置信息判断是否需要换行。这样就可以生成带格式的文本了。

    2023-08-29 14:23:32
    赞同 展开评论 打赏
  • 从事java行业9年至今,热爱技术,热爱以博文记录日常工作,csdn博主,座右铭是:让技术不再枯燥,让每一位技术人爱上技术

    您好,文字识别OCR您在调用具体业务场景下API接口返回Json数据后,您可以对接口返回的Json数据自行进行格式文本的匹配,根据您的具体需求将OCR接口返回的Json数据转化成您需要的格式。

    2023-08-08 16:56:41
    赞同 展开评论 打赏
  • 二次开发-此回答整理自钉群“【官方】阿里云OCR公共云客户交流群”

    2023-08-08 12:55:20
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    使用OCR服务返回的JSON数据生成带格式的文本有多种方法,具体取决于你想要的输出格式和目标。

    以下是一些常见的方法:

    1. 提取字段并拼接文本:分析OCR返回的JSON数据结构,并提取其中的字段,如文字内容、坐标信息等。然后,根据需要,将这些字段按照所需的格式进行拼接,生成带有格式的文本。例如,可以将识别的文字按行或段落排列,并添加相应的换行符、缩进、标点符号等来保持文本的格式。

    2. 使用模板引擎:如果你有特定的输出格式需求,可以考虑使用模板引擎来生成带格式的文本。模板引擎可以根据预定义的模板规则,将OCR返回的JSON数据中的字段值插入到相应的位置上,以生成所需的格式化文本。

    3. 借助样式化语言:如果你需要更复杂的格式化效果,如字体样式、颜色、布局等,你可以使用样式化语言(如HTML、Markdown等)来处理OCR返回的JSON数据。将OCR识别的文字嵌入到相应的样式标签或语法中,以实现所需的格式化效果。

    无论选择哪种方法,都需要仔细分析OCR返回的JSON数据结构,并根据具体需求进行处理和转换。确保理解OCR返回的字段含义,并灵活运用相关技术和工具,以生成符合预期格式的文本输出。

    2023-08-07 22:27:39
    赞同 展开评论 打赏
  • 使用OCR服务返回的JSON数据生成带格式的文本通常需要进行一些处理和解析操作。以下是一般的步骤:

    1. 解析JSON:首先,你需要解析OCR服务返回的JSON数据,以获取识别结果中的文本信息和其相应的坐标位置。不同的OCR服务可能会返回不同的JSON结构,因此你需要根据具体的服务提供商的文档来了解其返回的JSON格式。

    2. 提取文本和坐标:从解析后的JSON数据中提取出所需的文本信息和其对应的坐标位置。文本信息通常包含在JSON中的特定字段中,而坐标位置则可以用于确定每个文本区域的边界。

    3. 格式化文本:根据坐标位置,将提取出的文本信息放置到相应的位置上,以还原原始图像中的文本布局和格式。这可能涉及到文本的行、段落、字体样式(如粗体、斜体)、间距等方面的处理。

    4. 导出为带格式的文本:将处理后的文本信息根据需要导出为带格式的文本文件,如HTML、Markdown或其他格式。你可以根据具体需求来决定输出的文本格式,并使用相应的工具或库来实现导出操作。

    2023-08-07 19:51:34
    赞同 展开评论 打赏
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    你好,用特定语言将json格式转成固定数据格式即可。

    1、解析JSON数据,将给定的JSON字符串解析成一个可操作的Python数据结构,如字典。

    2、格式化文本,根据数据结构中的键值对,将其组织成一个带有标题、内容和格式的文本。

    以下是一个示例Python代码,用于实现上述步骤:

    import json
    
    # 给定的JSON字符串
    json_str = '''
    {
    "RequestId": "86B83935-DD36-195B-B6E4-D07BE370C8B6",
    "Data": "{"algo_version": "48f3e265513a79d5f9bc26f0c010476bbd856b2d", "data": {"face": {"algo_version": "48f3e265513a79d5f9bc26f0c010476bbd856b2d", "angle": 0, "data": {"address": "四川省攀枝花市榕树街277号", "birthDate": "1986年1月9日", "ethnicity": "汉", "idNumber": "510124198809071234", "name": "王銘宇", "sex": "男"}, "ftype": 0, "height": 397, "orgHeight": 397, "orgWidth": 619, "prism_keyValueInfo": [{"key": "name", "keyProb": 100, "value": "王銘宇", "valuePos": [{"x": 139, "y": 75}, {"x": 194, "y": 75}, {"x": 194, "y": 94}, {"x": 139, "y": 94}], "valueProb": 100}, {"key": "sex", "keyProb": 100, "value": "男", "valuePos": [{"x": 139, "y": 122}, {"x": 159, "y": 122}, {"x": 159, "y": 144}, {"x": 139, "y": 144}], "valueProb": 100}, {"key": "ethnicity", "keyProb": 100, "value": "汉", "valuePos": [{"x": 260, "y": 122}, {"x": 282, "y": 122}, {"x": 282, "y": 142}, {"x": 260, "y": 142}], "valueProb": 100}, {"key": "birthDate", "keyProb": 100, "value": "1986年1月9日", "valuePos": [{"x": 141, "y": 170}, {"x": 303, "y": 168}, {"x": 304, "y": 183}, {"x": 142, "y": 185}], "valueProb": 100}, {"key": "address", "keyProb": 100, "value": "四川省攀枝花市榕树街277号", "valuePos": [{"x": 141, "y": 221}, {"x": 385, "y": 221}, {"x": 385, "y": 241}, {"x": 141, "y": 241}], "valueProb": 100}, {"key": "idNumber", "keyProb": 100, "value": "510124198809071234", "valuePos": [{"x": 226, "y": 338}, {"x": 543, "y": 336}, {"x": 543, "y": 355}, {"x": 227, "y": 356}], "valueProb": 100}], "sliceRect": {"x0": 10, "x1": 623, "x2": 629, "x3": 10, "y0": 17, "y1": 18, "y2": 398, "y3": 412}, "warning": {"completenessScore": 100, "isCopy": 0, "isReshoot": 0, "qualityScore": 89.296059, "tamperScore": 99.99968}, "width": 619}}, "height": 416, "orgHeight": 416, "orgWidth": 629, "width": 629}",
    "Code": "如果识别成功,不会返回此字段",
    "Message": "如果识别成功,不会返回此字段"
    }
    '''
    
    # 解析JSON字符串为Python字典
    data_dict = json.loads(json_str)
    
    # 格式化输出文本
    formatted_text = f"RequestId: {data_dict['RequestId']}\n"
    formatted_text += "Data:\n"
    formatted_text += f"  Algo Version: {data_dict['Data']['algo_version']}\n"
    formatted_text += "  Data:\n"
    formatted_text += f"    Name: {data_dict['Data']['data']['face']['data']['name']}\n"
    formatted_text += f"    Sex: {data_dict['Data']['data']['face']['data']['sex']}\n"
    formatted_text += f"    Ethnicity: {data_dict['Data']['data']['face']['data']['ethnicity']}\n"
    formatted_text += f"    Birth Date: {data_dict['Data']['data']['face']['data']['birthDate']}\n"
    formatted_text += f"    Address: {data_dict['Data']['data']['face']['data']['address']}\n"
    formatted_text += f"    ID Number: {data_dict['Data']['data']['face']['data']['idNumber']}\n"
    formatted_text += f"  Warning - Completeness Score: {data_dict['Data']['data']['face']['warning']['completenessScore']}\n"
    formatted_text += f"  Warning - Quality Score: {data_dict['Data']['data']['face']['warning']['qualityScore']}\n"
    formatted_text += f"  Warning - Tamper Score: {data_dict['Data']['data']['face']['warning']['tamperScore']}\n"
    formatted_text += f"Code: {data_dict['Code']}\n"
    formatted_text += f"Message: {data_dict['Message']}\n"
    
    # 打印输出格式化后的文本
    print(formatted_text)
    
    2023-08-07 18:11:51
    赞同 展开评论 打赏
滑动查看更多

文字识别技术可以灵活应用于证件文字识别、发票文字识别、文档识别与整理等行业场景,满足认证、鉴权、票据流转审核等业务需求。

热门讨论

热门文章

相关电子书

更多
阿里云智能-印刷文字识别OCR-产品介绍 立即下载
阿里巴巴读光OCR 立即下载
印刷文字识别算法设计与在线服务 立即下载