党政公文自動排版ツール(gov-doc-formatter)

AI/ML

概要

gov-doc-formatter は、中国の党政機関向け公文(官公文書)の格式に沿ってWord文書を自動排版するツールです。ユーザーは .doc/.docx を Web インターフェースにアップロードすると、内部で大規模言語モデル(通义千问 等)を用いて文書内の各段落を「タイトル」「一級見出し」「本文」「発文機関」「日付」などに分類します。分類結果を元に GB/T 9704-2012 のルールに従ったフォント指定や段落スタイル、括弧の全角化、英数字のフォント切替(Times New Roman)などの変換を施し、再フォーマット済みの Word ファイルをダウンロードできる仕組みです。LibreOffice を使った .doc→.docx 変換や即時ダウンロード機能を備え、簡易的ながら実用的なワークフローを提供します。

GitHub

リポジトリの統計情報

  • スター数: 4
  • フォーク数: 0
  • ウォッチャー数: 4
  • コミット数: 3
  • ファイル数: 9
  • メインの言語: Python

主な特徴

  • LLM エージェントによる文段落の自動分類(見出し/本文/日付等)
  • GB/T 9704-2012 に基づく自動フォーマット適用(フォント・段落ルール)
  • .doc/.docx 対応(.doc は LibreOffice 経由で自動変換)
  • Web インターフェース(ドラッグ&ドロップでアップロード、即時ダウンロード)

技術的なポイント

本プロジェクトのコアは「LLM を用いた文段落分類」と「Word ファイルへの書式マッピング」の2点にあります。まず、アップロードされた Word 文書は python-docx などで段落単位に読み出され、各段落のテキストを LLM に投げてその役割(タイトル/一~四級見出し/本文/発文機関/日付 等)を判定します。LLM は自然言語の文脈や文字列パターンから階層や役割を推定できるため、従来のルールベース処理より柔軟に曖昧な表現を扱えます。判定結果を元に、リポジトリは GB/T 9704-2012 の規定をソース化したマッピングロジックで各段落のスタイル(フォント、サイズ、行間、インデント、段落前後スペース)を設定していきます。技術スタックとしては、LLM API のキーを .env で管理する設計(.env.example あり)、.doc を扱うための LibreOffice によるヘッドレス変換、変換後の docx を python-docx で編集し outputs ディレクトリへ保存するワークフローが想定されます。括弧の全角化や英数字のフォント切替など、文字レベルでの正規化処理も組み込まれており、言語混在文書に対する細かな見た目制御も可能です。一方で、LLM 依存のため判定精度はプロンプト設計やモデル品質に左右され、複雑な表組みや図、脚注などの要素は未対応・要改善の箇所が残ります。現状は初期段階のリリースでテストやロバスト性向上、エッジケース対応(多言語混在、特殊書式、段落内の複数役割など)が今後の課題となります。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .env.example: file
  • .gitignore: file
  • README.md: file
  • app: dir
  • outputs: dir

…他 4 ファイル

まとめ

LLM を利用した公文書自動排版のプロトタイプで、実用化に向けた基盤が整っている。

リポジトリ情報:

READMEの抜粋:

公文自动排版工具

基于大模型(通义千问)的党政机关公文自动排版agent工具,支持上传Word文档,自动识别文档结构并按照《党政机关公文格式》(GB/T 9704-2012) 国家标准进行排版。

(目前还处于初级阶段,正在持续优化中)

功能特点

  • 自动识别公文结构(标题、一至四级标题、正文、发文机关、日期)
  • 按照国标自动应用公文格式
  • 混合字体处理(中文使用规定字体,英文和数字使用 Times New Roman)
  • 自动标准化括号(将各种异常括号统一转换为中文全角括号)
  • 支持 .doc 和 .docx 格式(.doc 需要 LibreOffice 自动转换)
  • Web界面,支持拖拽上传
  • 即时下载排版后的文档

工具原理

使用LLM识别并标记各个文段性质(标题、一级标题、正文等),然后采用公文规则对各个文段进行格式映射转换,最后输出排版后 Word 文稿

快速开始

1. 安装 Python 依赖

pip install -r requirements.tx...