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

如何在Azure Logic App中将Form Recognizer识别结果转换为CSV

Azure Form Recognizer 识别结果转CSV(Logic App实现方案)

你当前的处理路径是正确的,只需要先清洗脏数据,再按行列拼接即可实现CSV导出,具体方案如下:

第一步:处理识别脏数据

你当前拿到的三元组数据中,同一个(columnindex,rowindex)坐标下存在大量带分割线的重复识别结果,优先对数据做分组清洗:

  • 按(列索引,行索引)对所有三元组做分组
  • 每组内过滤掉带连续横线的内容,保留最短的无特殊符号的有效文本,比如你示例中(0,0)坐标组内直接保留Weight即可

第二步:Logic App无代码实现流程

  • 初始化两个整数变量,分别存储最大行号和最大列号,遍历所有清洗后的三元组,更新两个变量的最大值
  • 初始化一个二维数组,行数为最大行号+1,列数为最大列号+1,所有位置默认填空字符串
  • 遍历所有清洗后的(列索引,行索引,文本)三元组,将文本赋值到二维数组对应的[行索引][列索引]位置
  • 遍历二维数组的每一行,将一行内的所有元素用半角逗号拼接为字符串,所有行的拼接结果用换行符连接,即可得到标准CSV内容
  • 可选优化:如果单元格内容可能包含逗号、换行符,将每个单元格内容的双引号替换为两个双引号,再用双引号包裹整个单元格内容,避免CSV格式错乱

第三步:Logic App 内联代码简化实现

如果觉得无代码步骤繁琐,可以直接添加「执行JavaScript代码」动作,用少量代码完成转换,参考代码如下:

// 请将下方workflowContext.actions.YourPreviousAction.outputs替换为你前置步骤输出的三元组数组
const rawTriples = workflowContext.actions.YourPreviousAction.outputs;
const cellMap = {};
let maxRow = 0, maxCol = 0;

// 数据清洗+坐标分组
rawTriples.forEach(item => {
  // 去掉前后引号,拆分三元组
  const [colStr, rowStr, rawText] = item.replace(/^"|"$/g, '').split(',');
  const col = parseInt(colStr), row = parseInt(rowStr);
  const key = `${col},${row}`;
  // 清理横线和前后空白
  const cleanText = rawText.replace(/-{2,}/g, '').trim();
  // 仅保留更短的有效内容
  if (!cellMap[key] || cleanText.length < cellMap[key].length) {
    cellMap[key] = cleanText;
  }
  // 更新最大行列号
  maxRow = Math.max(maxRow, row);
  maxCol = Math.max(maxCol, col);
});

// 生成标准CSV
const csvRows = [];
for (let r = 0; r <= maxRow; r++) {
  const currentRow = [];
  for (let c = 0; c <= maxCol; c++) {
    const cellVal = cellMap[`${c},${r}`] || '';
    // CSV转义处理
    currentRow.push(`"${cellVal.replace(/"/g, '""')}"`);
  }
  csvRows.push(currentRow.join(','));
}

return csvRows.join('\r\n');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:15:06