GOLEMator
收藏GOLEMator 数据集概述
数据集简介
GOLEMator 是一个用于生成波兰行政文档合成命名实体识别(NER)训练数据的工具。它通过向文档模板填充逼真的虚假数据(如姓名、日期、NIP号码、PESEL号码、地址等),生成可用于训练命名实体识别模型的标注数据集。
核心功能
- 支持50多种实体类型:包括波兰特有的实体(如PESEL、NIP、REGON、地址)以及通用实体(如日期、金额、姓名)。
- 三种生成模式:
- 文本模式:填充
.txt模板,生成标注的 Parquet 或 CSV 数据集。 - 基于图像的文档生成:在扫描的文档图像上的精确坐标处绘制填充的文本,导出为 PDF 或 JPG。
- 基于DOCX的文档生成:填充包含
{placeholder}字段的.docxWord 模板,并转换为 PDF 或 JPG。
- 文本模式:填充
- 启发式后处理与OCR模拟:可对生成的日期、金额、NIP号码和公司名称进行规范化;可选择性地破坏生成值以模拟OCR输出;包含PESEL/日期数字拆分、互斥复选框组和自定义表单后处理器。
- 提供CLI和Python API。
安装与要求
- Python版本:需要 Python 3.10 或更高版本。
- 核心安装(文本模式生成):
pip install . - 文档生成(Linux/Mac,通过LibreOffice):
pip install ".[doc]" - 文档生成(Windows,通过Microsoft Word):
pip install ".[doc-win]" - 完整安装(Linux/Mac):
pip install ".[all]" - 完整安装(Windows):
pip install ".[all-win]" - 系统依赖:
- 在 Linux/WSL 上进行基于DOCX的生成(
dest_ext="pdf"或"jpg")需要安装 LibreOffice(例如,在 Ubuntu/Debian/WSL 上使用sudo apt-get install -y libreoffice)。 - 在 macOS 上进行基于图像的生成需要系统字体(如
Arial.ttf或Helvetica.ttc),否则需安装备用字体(如brew install --cask font-dejavu)。
- 在 Linux/WSL 上进行基于DOCX的生成(
快速开始
命令行界面(CLI)
bash golemator --config examples/example_config.yaml
主要选项包括 --config(YAML配置文件路径,必需)、--output(输出目录,默认 output/)、--format(输出格式,parquet 或 csv,默认 parquet)、--name(输出文件基础名称,默认 generated_dataset)。
Python API
- 文本模式生成:使用
NerDataGenerator类生成标注文本数据集(Parquet/CSV),不渲染文档图像。 - 基于图像的文档生成:使用
ImageDocumentWrapper类。 - 基于DOCX的文档生成:使用
DocxDocumentWrapper类,可配置后处理器列表(如split_pesel_into_digits,create_date_splitter,create_choice_group_handler)。
配置文件(基于图像和文本模式生成)
配置文件为YAML格式,主要字段包括:
path_to_templates:指向基于图像的模板目录的路径。document_types:指定要生成的文档类型(子文件夹名称)及数量。use_templates:限制生成到特定的模板文件。generation_settings:生成设置,如probability_to_generate_OCR_Error_rows(OCR错误行生成概率,0.0-1.0)。
模板格式
基于图像的模板(.txt)
纯文本文件,使用 {placeholder} 语法,并与坐标JSON文件配对。坐标文件将每个占位符映射到文档图像上的边界框。占位符名称必须匹配 SupportedEntities 中的条目(完整列表见 golemator/generator/supported_entities.py)。
部分文档类型(如 barthel, formularz_funkcjonowania, kupno_sprzedaz)是纯文本类型(无 coordinates/ 或 images/ 文件夹),仅生成标注文本数据集,不渲染图像。其 entities.json 在顶层标记有 "_mode": "text-only"。
基于DOCX的模板(.docx + _entities.json)
包含 {placeholder} 字段的Word文档,并附带一个实体配置JSON文件。该JSON文件包含 template_name, doc_type, entities(映射模板占位符到实体名称)以及可选的 group_of_dependent_entities(用于配置互斥复选框组)。
后处理器
后处理器是在实体生成后应用的调用函数 (data: dict) -> dict。可将其列表传递给 NerDataGenerator.generate_doc_data() 或 DocxDocumentWrapper。
split_date_into_digits:将生成的日期拆分为单个数字字段。split_pesel_into_digits:生成有效的PESEL并将其拆分为单数字段。combined_date_pesel_postprocessor:同时应用上述两者的便捷包装器。create_date_splitter:工厂函数,返回使用day_{prefix}_N键约定的拆分器。handle_choice_groups:强制执行互斥复选框组。create_choice_group_handler:工厂函数,返回绑定到已加载实体配置的选择组处理器。wrke_custom_postprocessor:用于WRKE风格表单的示例后处理器。
项目结构
主要目录和文件包括:
golemator/:核心Python包,包含CLI、数据生成器、文档处理(图像和DOCX)、后处理、模板处理程序和工具模块。templates/:包含image_based/(基于图像的模板)和docx_based/(基于DOCX的模板)子目录。examples/:包含示例配置文件(example_config.yaml)和演示工作流程的Jupyter笔记本(test.ipynb,test_docx.ipynb)。
许可证
MIT 许可证。




