首次提交: OnebotCatalog 项目代码与文档(含 NX 按需生成服务二期、后台、一键启动)
This commit is contained in:
40
onebot-data/tools/scan-manual-pages.py
Normal file
40
onebot-data/tools/scan-manual-pages.py
Normal file
@@ -0,0 +1,40 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# 扫描 ONEBOT 手册 PDF: 定位每个系列的章节页范围 + 参数/尺寸关键词页
|
||||
# 用法: python tools\scan-manual-pages.py
|
||||
import fitz, os, re, sys
|
||||
|
||||
pdf = r"OnebotCatalog\ONEBOT - 直线气缸 - 中文.pdf"
|
||||
doc = fitz.open(pdf)
|
||||
DIGITS = {0xF6B1 + i: str(i) for i in range(10)}
|
||||
|
||||
def dec(text):
|
||||
return "".join(DIGITS.get(ord(ch), ch) for ch in text)
|
||||
|
||||
# 系列代码 → 显示名 (来自 build-onebot-catalog.ps1)
|
||||
SERIES = ["KC", "KCB", "KSB", "KCS", "KS", "KSU", "M", "MS", "MSC", "MAL", "MALC"]
|
||||
KEYWORDS = ["订购", "规格", "参数", "外形尺寸", "符号", "特性", "理论出力", "重量", "结构"]
|
||||
|
||||
print("总页数:", doc.page_count)
|
||||
pages = []
|
||||
for i in range(doc.page_count):
|
||||
t = dec(doc[i].get_text())
|
||||
pages.append(t)
|
||||
|
||||
# 1) 每页出现的系列码标题 (页首大字号? 简化: 整页文本匹配)
|
||||
hits = {}
|
||||
for i, t in enumerate(pages):
|
||||
found = set()
|
||||
for s in SERIES:
|
||||
# 系列标题一般单独成行, 如 "KC 系列" / "KC系列"
|
||||
if re.search(r"(?m)^\s*" + s + r"\s*系列", t) or re.search(r"(?m)^\s*" + s + r"系列", t):
|
||||
found.add(s)
|
||||
if found:
|
||||
hits[i + 1] = sorted(found)
|
||||
kw = [k for k in KEYWORDS if k in t]
|
||||
print(f"p{i+1:3d} 系列: {found} 关键词: {kw[:4]}")
|
||||
|
||||
print("\n--- 每页系列线索 (含页码的系列码出现) ---")
|
||||
for i, t in enumerate(pages):
|
||||
for s in SERIES:
|
||||
if re.search(r"(?m)^\s*" + s + r"\s*$", t): # 整页只有系列码的目录页可能
|
||||
print(f"p{i+1:3d} 独立行: {s}")
|
||||
Reference in New Issue
Block a user