首次提交: OnebotCatalog 项目代码与文档(含 NX 按需生成服务二期、后台、一键启动)

This commit is contained in:
wangruiguo
2026-09-03 17:55:45 +08:00
commit fafa86d3a6
241 changed files with 78656 additions and 0 deletions

85
dump_motor_pdf.py Normal file
View File

@@ -0,0 +1,85 @@
# -*- coding: utf-8 -*-
"""提取电机 PDF 数据手册的文字内容,输出到 motor_pdf_dump.txt"""
import sys, io, os
try:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
except Exception:
pass
SRC = r"C:\Users\ruigu\Downloads\DS-LE-INTEGRATED-EN(002) (1).pdf"
OUT = r"d:\开发\OnebotCatalog\motor_pdf_dump.txt"
def try_extract():
joined = ""
# 1) pypdf
try:
from pypdf import PdfReader
r = PdfReader(SRC)
parts = []
for i, p in enumerate(r.pages):
parts.append(f"--- PAGE {i+1} ---\n" + (p.extract_text() or ""))
joined = "\n".join(parts)
if len(joined.strip()) > 50:
return "pypdf", len(r.pages), joined
except Exception as e:
print("[pypdf fail]", repr(e))
# 2) PyPDF2
try:
import PyPDF2
r = PyPDF2.PdfReader(SRC)
parts = []
for i, p in enumerate(r.pages):
parts.append(f"--- PAGE {i+1} ---\n" + (p.extract_text() or ""))
joined = "\n".join(parts)
if len(joined.strip()) > 50:
return "PyPDF2", len(r.pages), joined
except Exception as e:
print("[PyPDF2 fail]", repr(e))
# 3) pdfplumber
try:
import pdfplumber
parts = []
with pdfplumber.open(SRC) as pdf:
for i, p in enumerate(pdf.pages):
parts.append(f"--- PAGE {i+1} ---\n" + (p.extract_text() or ""))
joined = "\n".join(parts)
if len(joined.strip()) > 50:
return "pdfplumber", len(parts), joined
except Exception as e:
print("[pdfplumber fail]", repr(e))
# 4) pdfminer.six
try:
from pdfminer.high_level import extract_text
joined = extract_text(SRC)
if len(joined.strip()) > 50:
return "pdfminer", "?", joined
except Exception as e:
print("[pdfminer fail]", repr(e))
return None, 0, ""
def main():
if not os.path.exists(SRC):
print("MISSING:", SRC)
return
lib, pages, text = try_extract()
if not lib:
print("NO_TEXT_EXTRACTED可能是扫描/图片型 PDF")
return
with open(OUT, "w", encoding="utf-8") as f:
f.write(text)
print("DONE")
print("库:", lib, "| 页数:", pages, "| 字符数:", len(text))
print("输出:", OUT)
print("=" * 60)
print(text[:4000])
if __name__ == "__main__":
main()