如何用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
相关产品推荐
相关产品推荐

