山大软院创新实训易学探索助手--个人报告(六)

数据预处理:从古籍图片到结构化数据:OCR与XML/Excel转换

一、项目背景

在古籍数字化和大模型训练场景中,我们常面临特殊排版文本的处理需求。本文以44种竖向从右至左排列的繁体古文为研究对象,通过OCR识别、XML结构化处理,最终生成符合大模型训练要求的Excel数据集。

二、技术路线设计

  1. 图像处理层:PaddleOCR识别竖排文本
  2. 结构转换层:生成标准XML文件
  3. 数据整合层:XML转Excel统一存储

三、关键技术实现

3.1 OCR识别与XML生成(Python实现)

核心代码解析

def generate_xml(image_path, xml_path):
    # OCR识别(支持中文竖排识别)
    result = ocr.ocr(str(image_path), cls=True)
    
    # 从右至左排序逻辑
    boxes_texts.sort(key=lambda b: -b[0])
    
    # XML结构生成
    root = ET.Element('page', {
        'id': xml_id,
        'size': f'{width},{height}',
        'md5': md5sum
    })
    
    # 文本块标注
    for idx, (x, y, h, text) in enumerate(boxes_texts, start=1):
        style = f'{x},{y},0,{h};f:0,{h-4}'
        ET.SubElement(root, 'text', {'id': str(idx+2), 'style': style}).text = text

关键技术点

  1. 竖排识别优化

    • 使用PaddleOCR的use_angle_cls=True参数启用方向分类
    • lang='ch'参数优化中文识别效果
  2. 从右至左排序

    boxes_texts.sort(key=lambda b: -b[0])  # 按x坐标降序排列
    
  3. 元数据保留

    • 图像MD5校验码
    • 图像尺寸与格式
    • 创建时间戳

3.2 XML转Excel(Java实现)

核心处理逻辑

public class XmlToExcelConverter {
    // 多文件夹批处理
    File[] directories = rootDir.listFiles(File::isDirectory);
    
    // 创建Excel工作簿
    Workbook workbook = new XSSFWorkbook();
    
    // XML内容提取
    StringBuilder content = new StringBuilder();
    List<Node> textNodes = document.selectNodes("//text");
}

关键特性

  1. 批量处理架构

    • 支持多层级目录遍历
    • 自动识别index.xml元数据文件
  2. 数据标准化

    // Excel列设计
    headerRow.createCell(0).setCellValue("book_id");
    headerRow.createCell(1).setCellValue("book_name");
    headerRow.createCell(3).setCellValue("content");
    
  3. 内容聚合策略

    • 多XML文件合并为单个Excel
    • 章节自动编号
    • 文本块换行符分隔

四、成果示例

4.1 图片结构

4.2 XML文件结构

<page id="0891001001.xml" relate="0891001001.jpg" size="5696,4439">
<font id="0">zykkai</font>
<rect id="1" box="105,183,5490,4086" foreground="255,255,255"/>
<rect id="2" box="125,203,5450,4046" foreground="255,255,255"/>
<text id="3" style="4755,291,0,1304;f:0,730">周易內</text>
<text id="4" style="3938,288,0,1309;f:0,737">傳六卷</text>
<text id="5" style="3393,1373,0,345;f:0,322">後學吴讓之署</text>
<text id="6" style="1544,1046,0,374;f:0,358">同治四年湘鄉曽</text>
<text id="7" style="1034,1051,0,374;f:0,370">氏栞于金陵節署</text>
</page>

4.3 Excel数据结构

五、性能优化点

  1. OCR加速方案

    • 多进程批量处理
    • GPU加速识别
  2. 内存管理

    try (FileOutputStream fos = new FileOutputStream(outputExcelFile)) {
        workbook.write(fos); // 自动资源释放
    }
    
  3. 异常处理增强

    • 图像损坏检测(通过MD5校验)
    • XML格式验证

六、应用展望

本方案已成功应用于:

  1. 古籍数字化存档
  2. 古文大模型预训练
  3. 文献计量分析
  4. 跨时代语言演变研究

未来可扩展支持:

  • 其他特殊字体识别
  • 多语言混合排版处理
  • 自动标点复原功能

posted @ 2025-05-14 11:49  htekye  阅读(127)  评论(0)    收藏  举报