You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python工具可视化Microsoft Azure Read API返回的OCR JSON结果?

Azure Read API OCR JSON结果Python可视化解决方案

可用方案选择

有完全跨平台的Python工具包可直接使用,支持全系统(Linux、macOS、Windows),无需依赖Windows专属组件,功能包含:

  • 自动适配Azure Read v3.x/v4.x版本的JSON输出格式
  • 匹配原始PDF的页面对应坐标,标注识别文本框、置信度、文本内容
  • 支持导出带标注的单页图片或合并PDF
  • 可自定义标注样式、置信度过滤阈值等参数

极简自定义实现脚本

如果不需要复杂功能,可以直接使用以下轻量脚本实现基础可视化,仅依赖两个第三方库:

依赖安装

执行命令安装所需依赖:
pip install pymupdf pillow

可直接运行的代码

import json
import fitz  # 来自pymupdf库,用于处理PDF
from PIL import Image, ImageDraw, ImageFont

# 可自行修改的配置参数
AZURE_OCR_JSON_PATH = "你的OCR结果JSON文件路径.json"
ORIGIN_PDF_PATH = "原始PDF文件路径.pdf"
OUTPUT_DIR = "标注结果保存的目录路径"
CONFIDENCE_THRESHOLD = 0.8  # 仅标注置信度低于该值的识别结果,设为0则标注所有内容
FONT_SIZE = 12

# 加载OCR识别结果
with open(AZURE_OCR_JSON_PATH, "r", encoding="utf-8") as f:
    ocr_result = json.load(f)

# 打开原始PDF文件
pdf_doc = fitz.open(ORIGIN_PDF_PATH)

for page_idx, page in enumerate(pdf_doc):
    # 将当前PDF页转为指定dpi的图片
    pix = page.get_pixmap(dpi=150)
    img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
    draw = ImageDraw.Draw(img)
    
    # 加载字体,优先用系统字体,失败则用默认字体
    try:
        font = ImageFont.truetype("arial.ttf", FONT_SIZE)
    except:
        font = ImageFont.load_default(size=FONT_SIZE)
    
    # 获取当前页对应OCR结果,处理坐标映射
    ocr_page = ocr_result["analyzeResult"]["pages"][page_idx]
    scale_x = pix.width / page.rect.width
    scale_y = pix.height / page.rect.height

    # 遍历所有识别行,绘制标注
    for line in ocr_page["lines"]:
        conf = line.get("confidence", 1.0)
        if conf >= CONFIDENCE_THRESHOLD:
            continue
        
        # 解析Azure返回的四点坐标,转换为图片像素坐标
        coords = line["polygon"]
        x_coords = [c * scale_x for c in coords[::2]]
        y_coords = [c * scale_y for c in coords[1::2]]
        x_min, x_max = min(x_coords), max(x_coords)
        y_min, y_max = min(y_coords), max(y_coords)
        
        # 绘制红色标注框,标注文本和置信度
        draw.rectangle([(x_min, y_min), (x_max, y_max)], outline="red", width=2)
        draw.text(
            (x_min, y_min - FONT_SIZE - 2),
            f"{line['content']} (置信度:{conf:.2f})",
            fill="red",
            font=font
        )
    
    # 保存当前页标注结果
    output_path = f"{OUTPUT_DIR}/第{page_idx + 1}页_标注结果.png"
    img.save(output_path)

print(f"标注完成,所有结果已保存到指定输出目录")

注意事项

  • 该脚本全平台通用,无系统限制
  • 如果需要标注中文内容,将字体路径替换为系统中的中文字体文件路径即可
  • 如果使用的是更早版本的Azure Read API,调整代码中JSON字段的读取路径即可适配
  • 若需要导出为带标注的PDF,可直接将生成的标注图片通过pymupdf合并为PDF文件

内容的提问来源于stack exchange,提问作者user_1177868

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:36:01