视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
ee-datasheet-master【文档与办公】Use when user has/is reading a component datasheet or spec sheet to find chip parameters: pinout, voltage, I2C address, timing, register map, electrical characteristics. Trigger on PDF+chip questions. Also: 规格书, 数据手册, 芯片参数. All IC types.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Before using scripts/pdf_tools.py:
python3scripts/pdf_tools.pyIf a required dependency or input is missing:
All factual output must come from the PDF itself. If the PDF cannot provide the answer, return NOT SPECIFIED IN DATASHEET and explain the most direct way to obtain that information.
ALL DATA MUST ORIGINATE FROM THE PDF.
Allowed: Extract → Calculate from extracted data
Forbidden: Use prior knowledge → Fill gaps with guesses
| Type | Example |
|---|---|
| Mathematical calculation | P = V × I from voltage and current |
| Unit conversion | dBm → mW, binary → hex |
| Address calculation | "001000x" → 0x10/0x11 |
| Counting | Pin count from Pin Description table |
When deriving: Show source data (page) + calculation steps + result
| Behavior | Correction |
|---|---|
| "I know this chip..." | Find the spec in PDF |
| "Typical value is..." | Read the actual value from PDF |
| "Similar chips have..." | This one may differ |
| Guessing to fill gaps | Output "NOT SPECIFIED IN DATASHEET" + acquisition path (see below) |
"NOT SPECIFIED IN DATASHEET" is not a dead end. Always follow it with how to obtain the missing information.
"[Parameter] is not specified in this datasheet. To obtain it: [specific method below]."
If the datasheet references an application note or supplementary doc by name, cite it:
"Section X references Application Note [AN-xxx] for this topic — search [Manufacturer] website."
When a parameter is absent, reason through these questions to give a concrete, actionable path:
1. Why is it missing?
2. What does the user actually need it for?
3. What is the most direct path given the above? Tailor the recommendation to the specific parameter and context — a thermal resistance question for an LDO in a hot enclosure calls for a different answer than the same question for a signal-path op-amp. Reason about: what equipment would give this measurement, what document would contain this spec, or what formula derives this value from things the user can measure or control.
┌─────────────────────────────────────────────────────────────┐
│ Phase 0: Pre-scan → 全文扫描,建结构地图 │
│ Phase 1: Diagnosis → text vs image PDF 决策 │
│ Phase 2: Device ID → 确认器件,推断关键参数 │
│ Phase 2b: Targeted Scan → 推断 patterns,二次精准扫描 │
│ Phase 3: Section Mapping → 定位各功能区页码 │
│ Phase 4: Extraction → 精准提取 + TEMPLATES 结构化输出 │
└─────────────────────────────────────────────────────────────┘
See PDF_STRATEGY.md for the entry-point decision table and detailed workflow. Read that first — it tells you which phase to start at before running any command.
Most common case — device named, 1–2 specific parameters asked (start here):
# Phase 3: Search directly for the parameter the user asked about
python scripts/pdf_tools.py search_table <pdf_path> "<parameter>" # e.g. "quiescent current", "dropout voltage"
python scripts/pdf_tools.py search <pdf_path> "<parameter>" # try alternate phrasings if first is empty
# Phase 4: Read the identified page
python scripts/pdf_tools.py text <pdf_path> <page_num>
python scripts/pdf_tools.py tables <pdf_path> <page_num>
Less common — unknown PDF, open-ended analysis, or complex multi-parameter extraction:
# Phase 0: Pre-scan (slow — only when you need a structural map)
python scripts/pdf_tools.py info <pdf_path>
python scripts/pdf_tools.py page_hints <pdf_path> # scan ALL pages → minutes on large docs
# Phase 2: Identify Device (only if device is not already known)
python scripts/pdf_tools.py text <pdf_path> 1
# Phase 2b: Targeted re-scan (complex ICs only — charger, MCU, CODEC)
python scripts/pdf_tools.py dump_patterns > /tmp/custom_patterns.json
python scripts/pdf_tools.py page_hints <pdf_path> --patterns /tmp/custom_patterns.json
# Phase 3: Caption-based section mapping
python scripts/pdf_tools.py search_caption <pdf_path> # find Figure/Table captions
python scripts/pdf_tools.py search <pdf_path> "Electrical Characteristics"
When the user asks for a complete analysis or overview, extract these 5 baseline parameters. Skip this for targeted single-parameter queries — if the user asks "what is the dropout voltage?", go find that, not the package outline.
| Parameter | Search Keywords | Notes |
|---|---|---|
| Manufacturer | First page header/footer | Company name |
| Part Number | First page title | Full part number |
| Package | "Package", "封装" | Must include pin count (e.g., QFN-32) |
| Operating Voltage | "VDD", "VCC", "Supply Voltage", "电源电压" | Range: min to max |
| Operating Temperature | "Operating Temperature", "工作温度" | Range: min to max |
After identifying the device, infer what specs matter:
1. Read device description (first 3 pages)
2. Understand: What does this device DO?
3. Infer: What specs matter for this device?
4. Search: Use pdf_tools to locate those specs
For the complete device-type → key specs lookup table and per-device extraction shortcuts, see PDF_STRATEGY.md → Phase 2 and Device-Type Shortcuts.
Key insight: Device description tells you what to measure. Don't use predefined lists.
# [Part Number] Datasheet Analysis
## Summary
[1-2 sentences]
## Key Specifications
| Parameter | Min | Typ | Max | Unit | Source | Notes |
|-----------|-----|-----|-----|------|--------|-------|
| ... | ... | ... | ... | ... | Page X, "Table Name" | |
| [unavailable param] | — | — | — | ... | NOT SPECIFIED | Measure: [method] |
## Pin Configuration
- Package: [Type]-[Pin Count]
- Power Domains: [List ALL with pin numbers]
- Interfaces: [I2C/SPI/UART with addresses]
## Critical Design Considerations
1. [Issue with guidance]
## Common Pitfalls
- [Pitfall]: [How to avoid]
| Mistake | Example | Correction |
|---|---|---|
| Missing pin count | "QFN package" | "QFN-32 package" |
| Partial power domains | "VDD" only | "VDD (pins 1, 13, 32)" |
| I2C address wrong | "0x18" | Show calculation from format |
| Missing source | "SNR: 93 dB" | "SNR: 93 dB (Page 8, Typ)" |
| Hallucinated specs | Any value without source | Always cite page and table |
Error: ModuleNotFoundError: fitz or No module named 'pdfplumber'
Cause: Python dependencies are not installed.
Solution: Run pip install -r scripts/requirements.txt before continuing.
Error: File not found or the PDF path does not exist
Cause: The PDF was not provided or the path is wrong.
Solution: Ask the user for the exact PDF path. Do not answer from memory or general web knowledge.
Error: is_text_based: false or extracted text is mostly garbage
Cause: The PDF is image-based or uses difficult font encoding.
Solution: Use render_page, read visually, and lower confidence. If manufacturer or part number cannot be confirmed from the rendered page, return UNABLE TO VERIFY.
Error: The requested parameter is not in the datasheet
Cause: The value is genuinely absent from this document, or the wrong document was provided.
Solution: Return NOT SPECIFIED IN DATASHEET and follow it with the most direct acquisition path.
Error: Tool commands keep failing Cause: Broken Python environment, unsupported PDF edge case, or damaged file. Solution: Report the failing command and classify the issue as dependency, file integrity, or extraction quality. Do not present guesses as extracted facts.
If you think:
STOP → Re-read PDF → Extract from source
| File | Purpose |
|---|---|
| PDF_STRATEGY.md | 6-phase workflow, device-type extraction shortcuts |
| TEMPLATES.md | Structured output templates: device_info, power_domains, I2C, SPI, electrical_specs |
| scripts/pdf_tools.py | PDF extraction tools |