Files
hermes-skills/skills/legal/contract-portfolio-analysis/references/ocr-reuse-and-rendering.md
T

2.7 KiB

OCR复用 + OnlyOffice渲染技巧

OCR复用(跳过Step 1提取)

前session已提取的 *_全文.md / *_全文_OCR.md 文件若已存放于Nextcloud校区目录, 可直接复用,无需重新OCR。

确认步骤:

# 1. 列出已有MD文件
sudo docker exec nextcloud-nextcloud-1 find "<校区容器路径>" -name "*.md" -type f | sort

# 2. 逐份对照PDF清单——每份PDF都有对应MD即可跳过提取
# 3. docker cp 到本地
sudo docker exec nextcloud-nextcloud-1 cat "<容器内MD路径>" > /tmp/<工作目录>/<文件名>.md

# 4. 仍须跑 garble 检测确认质量
python3 ~/.hermes/skills/legal/contract-portfolio-analysis/scripts/ocr-garble-detect.py <文件>.md

# 5. 高危乱码 vision 核实 → 全灭后进 Step 2

世茂校区实证(2026-07-02):

4份合同全部已有MD提取文件,直接跑garble检测:

  • 青少租赁:15处高危(大部分在目录页OCR噪声+附件表格),关键条款vision验证通过
  • 青少物业:6处高危
  • 高中租赁:18处高危
  • 高中物业:2处高危

关键金融数据(面积/租金/税率)通过vision交叉验证确认准确后,整体Step 1节省约20分钟。


OnlyOffice x2t 渲染 — 写XML的权限问题

问题:

docker exec ... bash -c 'cat > /tmp/convert.xml << EOF ...' 经常报 "Permission denied", 因为容器内 /tmp 可能被前次操作留下的 root 文件占用。

解决方案:用 Python 写文件

sudo docker exec nextcloud-onlyoffice-1 rm -f /tmp/input.xlsx /tmp/output.pdf /tmp/convert.xml
sudo docker cp <本地xlsx> nextcloud-onlyoffice-1:/tmp/input.xlsx

sudo docker exec nextcloud-onlyoffice-1 python3 -c "
with open('/tmp/convert.xml', 'w') as f:
    f.write('''<?xml version=\"1.0\" encoding=\"utf-8\"?>
<TaskQueueDataConvert xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">
  <m_sFileFrom>/tmp/input.xlsx</m_sFileFrom>
  <m_sFileTo>/tmp/output.pdf</m_sFileTo>
  <m_nFormatTo>513</m_nFormatTo>
</TaskQueueDataConvert>''')
"

sudo docker exec nextcloud-onlyoffice-1 /var/www/onlyoffice/documentserver/server/FileConverter/bin/x2t /tmp/convert.xml
sudo docker cp nextcloud-onlyoffice-1:/tmp/output.pdf <本地输出路径>

关键点:

  • rm -f 清理旧文件避免权限冲突
  • python3 -c 写文件比 bash heredoc 可靠(避免容器内 shell 权限/重定向问题)
  • m_nFormatTo=513 = PDF格式

已知限制:

  • x2t渲染PDF时,白色字体在深色背景上可能不显示(字体嵌入问题)
  • 这不影响xlsx本身——用户在OnlyOffice中打开时白色文字正常显示
  • 视觉验证时注意:标题行的白色文字不显示≠格式错误,属x2t渲染特性