Indra批量OCR错误处理：坏文件不中断后续，按输入顺序交付每份结果

素材身份：作者原创输入/可编辑参考。目标工具未在本轮执行。
先打开 index.html；input.csv 是原始字段，reference.csv 是验收基准，negative.csv 是故意构造的坏样例。
actual-results.csv 保留未测状态，实际执行后再填写。

前置条件：
Python环境与本地CPU；Indra使用ONNX，不需要PyTorch或GPU，首次运行需下载约76MB默认模型，math模型另计。
代码Apache2.0；权重modified OpenRAIL-M，有企业规模与竞争用途限制，不能宣传无限制免费商用。
本课原生材料可离线免费检查；目标识别未执行，实际page.source/conf/坐标只能运行后填写。

操作步骤：
1. 准备有序输入清单
按A正常、B损坏、C正常列出三文件。
损坏B是作者构造的无效PDF字节，不包含敏感材料。

2. 添加进程入口保护
在macOS/Windows把convert_many放进if __name__ == "__main__"。
官方说明缺少保护会警告并回退单进程，不应称并行已生效。

3. 设置有限核心数
本课用cores=2，记录实际环境与任务数量。
不把CPU核心数直接当每秒页数。

4. 逐项处理结果
遇到indra_ocr.InputError写入失败台账并继续。
失败不能直接continue后无痕丢掉。

5. 核对返回顺序
将每个path与输入序号连接，检查结果按输入顺序交付。
不要按完成快慢重新命名文件，容易错配来源。

6. 检查批次状态
CLI任一文件失败时退出1，成功文件仍应有结果。
退出1不等于全部失败，退出0也需覆盖数量检查。

7. 交付全批清单
保存三份输入身份、两份成功产物和一份失败原因。
重试仅针对失败项，避免重复处理已验收材料。

验收：
B失败被明确记录。
C仍处理且来源不串。
main guard和核心设置可核对。

官方资料：
https://huggingface.co/datalab-to/indra-ocr

图片身份：assets/ 为内置image_gen生成的原创练习输入缩略版，原始文件保留在网站图片来源地址。可编辑SVG为作者原生排版。
