2.7 KiB
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渲染特性