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

Azure Language Studio OCR生成Python脚本无文本内容方案咨询

思路合理性判定

你的实现思路完全可行。Azure OCR返回结果本身自带内容类型、边界区域、层级关联标记,不需要额外训练模型就能实现「过滤表格、提取正文+公式+特殊符号」的需求。你之前拿不到实际文本,是因为Language Studio自动生成的示例脚本默认只返回接口调用状态、操作ID这类元数据,没有解析结果里的内容字段。

标准实现流程
  • 前置准备
    先把Word文档转成固定版式的高清文件(推荐转PDF或者300DPI以上的PNG,不要直接传.docx源文件给OCR接口,避免版式错乱导致识别偏差;如果文档里有复杂公式,转的时候不要压平公式图层),准备好Azure AI Vision的密钥和终结点,调用时选择read识别接口——这个接口原生支持输出LaTeX格式的数学公式,可识别绝大多数印刷类特殊符号。
  • 接口调用配置
    不要直接用Language Studio自动生成的默认脚本,手动构造请求时,在参数里指定2024-02-01及以后的模型版本,打开公式识别开关。接口是异步轮询机制,提交请求后要定期查询识别状态,等识别完成后再拉取完整结果对象,不要直接拿同步返回的请求回执解析内容。
  • 内容过滤逻辑
    识别结果按页返回内容块,每个块自带type标记和边界坐标:
    • 遇到type为table的块,先记录这个块的四周边界坐标,跳过该块的内容提取
    • 遇到type为text、formula的块,先判断块的中心坐标是否落在已记录的表格边界范围内,如果不在,就把内容归入待拼接的正文队列
    • 公式块会同时返回普通文本形式和LaTeX格式两种结果,按需取用即可;特殊符号会直接以Unicode编码存在文本字段中,不需要额外转码
  • 结果后处理
    Azure OCR返回的非表格内容默认按从上到下、从左到右的阅读顺序排列,直接拼接后处理多余换行、空格即可,多页文档逐页识别后按页码顺序拼接。
基础脚本参考结构
import azure.ai.vision as sdk

# 初始化客户端
service_options = sdk.VisionServiceOptions(
    endpoint="替换为你的Azure服务终结点",
    key="替换为你的Azure服务密钥"
)
# 传入转好格式的目标文件路径
vision_source = sdk.VisionSource(filename="替换为你的目标文件路径")

# 配置识别参数
analysis_options = sdk.ImageAnalysisOptions()
analysis_options.features = (
    sdk.ImageAnalysisFeature.TEXT | 
    sdk.ImageAnalysisFeature.OBJECTS
)
# 指定支持公式识别的模型版本,开启公式识别
analysis_options.model_version = "2024-02-01"
analysis_options.additional_properties["features"] = "formulas"

# 提交识别请求
image_analyzer = sdk.ImageAnalyzer(service_options, vision_source, analysis_options)
result = image_analyzer.analyze()

final_content = []
# 第一步:收集当前页所有表格的边界坐标
table_bbox_list = []
if result.objects:
    for obj in result.objects:
        if obj.name == "table":
            x, y, w, h = obj.bounding_box.x, obj.bounding_box.y, obj.bounding_box.w, obj.bounding_box.h
            table_bbox_list.append({
                "x_min": x,
                "y_min": y,
                "x_max": x + w,
                "y_max": y + h
            })

# 坐标判断工具:检查内容块是否在表格范围内
def is_block_in_table(block_polygon):
    # 取内容块中心点做判断,减少坐标误差
    center_x = (block_polygon[0] + block_polygon[2]) / 2
    center_y = (block_polygon[1] + block_polygon[5]) / 2
    for bbox in table_bbox_list:
        if bbox["x_min"] <= center_x <= bbox["x_max"] and bbox["y_min"] <= center_y <= bbox["y_max"]:
            return True
    return False

# 第二步:提取非表格区域的普通文本
if result.text:
    for line in result.text.lines:
        if not is_block_in_table(line.bounding_polygon):
            final_content.append(line.content)

# 第三步:提取非表格区域的公式
if hasattr(result, "formulas") and result.formulas:
    for formula in result.formulas:
        if not is_block_in_table(formula.bounding_polygon):
            # 按需替换为formula.value获取普通文本格式的公式
            final_content.append(f"$${formula.latex}$$")

# 拼接输出最终结果
output = "\n".join(final_content)
print(output)

注意:处理多页文档时,逐页执行上述识别、过滤、拼接逻辑即可;如果存在跨页表格,可以通过相邻页首尾的表格坐标匹配做合并过滤,避免把跨页表格的残留内容提取到正文中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:27:17