首次提交: OnebotCatalog 项目代码与文档(含 NX 按需生成服务二期、后台、一键启动)
This commit is contained in:
85
dump_motor_pdf.py
Normal file
85
dump_motor_pdf.py
Normal 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()
|
||||
Reference in New Issue
Block a user