Metadata-Version: 2.4
Name: patent-analyzer
Version: 0.1.0
Summary: Google专利数据分析工具 - 支持 CSV 处理、Excel 导出和 Web 可视化
Author-email: Chandler <275737875@qq.com>
License-Expression: MIT
Keywords: patent,analysis,visualization,network,excel
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: pandas>=1.5.0
Requires-Dist: numpy>=1.24.0
Requires-Dist: networkx>=3.0
Requires-Dist: python-louvain>=0.16
Requires-Dist: matplotlib>=3.7.0
Requires-Dist: openpyxl>=3.1.0
Requires-Dist: typer>=0.12.0
Requires-Dist: rich>=13.0.0
Requires-Dist: fastapi>=0.110.0
Requires-Dist: uvicorn[standard]>=0.29.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"

# Patent Analyzer - 专利数据分析工具

`patent-analyzer` 是一个用于分析 Google Patent CSV 数据的 Python 工具包。它提供从数据清洗、作者统计、合作网络分析到可视化看板的一站式解决方案。

## 功能特性

1. **数据处理**
   - 自动加载和清洗 Google Patent CSV 数据
   - 解析发明人、日期、专利类型等字段
   - 基于关键词的技术领域自动分类

2. **数据分析**
   - 作者专利统计与技术方向分析
   - 合作网络构建与 Louvain 社区检测
   - 时间趋势分析
   - 发明人重要性综合评估（专利数、质量、中心性、技术广度、活跃度）
   - 研发团队结构识别

3. **数据导出**
   - 生成文本报告（report.txt）
   - 导出 JSON 数据文件（author_stats.json, teams.json, cooperation.json）
   - 导出多 Sheet Excel 文件
   - 生成 matplotlib 可视化图表（PNG）

4. **Web 可视化看板**
   - 基于 FastAPI 的 RESTful API
   - 基于 ECharts + Tailwind CSS + Alpine.js 的现代化前端
   - 支持图表展示、数据搜索、分页浏览
   - 合作网络力引导布局可视化

## 安装指南

### 环境要求
- Python >= 3.9
- pip >= 21.0

### 从 PyPI 安装（推荐）
```bash
pip install patent-analyzer
```

### 从源码安装
```bash
git clone https://github.com/example/patent-analyzer.git
cd patent-analyzer
pip install -e ".[dev]"
```

### 验证安装
```bash
patent-analyzer info
```

## 使用示例

### 1. 命令行处理 CSV 数据
```bash
# 处理 CSV 并生成报告、JSON 和图表
patent-analyzer process GooglePatent.csv --output-dir ./output

# 不生成图表，仅生成文本和 JSON
patent-analyzer process GooglePatent.csv --output-dir ./output --no-viz
```

### 2. 导出 Excel
```bash
patent-analyzer export-excel GooglePatent.csv --output report.xlsx
```

### 3. 启动 Web 服务
```bash
# 先处理数据再启动服务
patent-analyzer serve --input GooglePatent.csv --output-dir ./output

# 或直接加载已有的 output 目录
patent-analyzer serve --output-dir ./output --host 0.0.0.0 --port 8000
```
访问 http://127.0.0.1:8000 查看可视化看板。

### 4. Python API 使用
```python
from patent_analyzer import PatentDataLoader, AuthorAnalyzer, CooperationAnalyzer

# 加载数据
loader = PatentDataLoader("GooglePatent.csv")
df = loader.load().clean().get_df()

# 作者分析
author_analyzer = AuthorAnalyzer(df)
author_analyzer.analyze()
print(author_analyzer.get_stats())

# 合作网络
coop_analyzer = CooperationAnalyzer(df)
coop_analyzer.analyze()
print(len(coop_analyzer.close_coop))
```

## 项目架构

```
patent_analyzer/
├── src/patent_analyzer/
│   ├── __init__.py          # 包入口
│   ├── __main__.py          # python -m patent_analyzer
│   ├── cli.py               # Typer 命令行接口
│   ├── core/                # 核心分析引擎
│   │   ├── data_loader.py   # CSV 加载与清洗
│   │   ├── analyzer.py      # 分析引擎（作者、合作、时间、团队、重要性）
│   │   ├── visualizer.py    # matplotlib 可视化
│   │   ├── report.py        # 报告与 JSON 导出
│   │   └── exporter.py      # Excel 导出
│   ├── web/                 # FastAPI Web 服务
│   │   ├── app.py           # FastAPI 应用工厂
│   │   ├── api/             # RESTful API 路由
│   │   ├── services/        # 数据缓存服务
│   │   └── static/          # 前端页面
│   └── utils/
│       └── logging.py       # 日志配置
├── tests/                   # 单元测试
├── pyproject.toml
└── README.md
```

## 新手入门

### 第一步：准备数据
确保你有一个从 Google Patent 导出的 CSV 文件，格式如下（前两行为 URL 和表头，从第三行开始是数据）：
```
https://patents.google.com/?...
id,title,assignee,inventor,...
CN123456789,一种激光雷达装置,...
```

### 第二步：快速体验
```bash
# 处理数据
patent-analyzer process GooglePatent.csv

# 查看生成的 output/ 目录
ls output/
# report.txt  author_stats.json  teams.json  cooperation.json  *.png
```

### 第三步：启动看板
```bash
patent-analyzer serve --output-dir output
```
打开浏览器访问 http://127.0.0.1:8000

## API 接口说明

Web 服务启动后提供以下 API：

| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/health` | 健康检查 |
| GET | `/api/overview/kpi` | 核心 KPI |
| GET | `/api/overview/patent-types` | 专利类型分布 |
| GET | `/api/overview/tech-fields?top=20` | 技术领域 TOP N |
| GET | `/api/overview/year-trend` | 年度趋势 |
| GET | `/api/authors` | 作者列表（支持搜索、排序、分页） |
| GET | `/api/authors/top?n=20` | TOP N 作者 |
| GET | `/api/authors/{name}` | 作者详情 |
| GET | `/api/teams` | 团队列表 |
| GET | `/api/teams/top?n=10` | TOP N 团队 |
| GET | `/api/cooperation` | 紧密合作列表 |
| GET | `/api/cooperation/network?limit=200` | 网络图数据 |

## 参数说明

### process 命令
- `input_file`: 输入 CSV 文件路径（必需）
- `--output-dir, -o`: 输出目录，默认 `output`
- `--no-viz`: 禁用图表生成

### export-excel 命令
- `input_file`: 输入 CSV 文件路径（必需）
- `--output, -o`: 输出 Excel 路径，默认 `patent_analysis.xlsx`

### serve 命令
- `--input, -i`: 输入 CSV 文件路径（可选，指定则先处理）
- `--output-dir, -o`: 数据输出目录，默认 `output`
- `--host`: 绑定地址，默认 `127.0.0.1`
- `--port, -p`: 监听端口，默认 `8000`
- `--reload`: 开发模式热重载

## 最佳实践

1. **大数据量处理**：如果 CSV 文件很大（>10MB），建议先用 `process` 命令生成 output，再用 `serve` 加载，避免每次启动都重新分析。
2. **定期更新**：可以设置定时任务运行 `process` 命令，保持 output 目录数据最新。
3. **自定义技术领域**：编辑 `patent_analyzer/core/data_loader.py` 中的 `TECH_KEYWORDS` 字典，添加你关注的技术关键词。
4. **日志记录**：CLI 命令会自动输出处理进度。如需文件日志，可在 Python API 中调用 `setup_logging(log_file="analysis.log")`。

## 依赖项清单

核心依赖：
- pandas, numpy: 数据处理
- networkx, python-louvain: 网络分析与社区检测
- matplotlib: 静态图表生成
- openpyxl: Excel 导出
- typer, rich: 命令行交互
- fastapi, uvicorn: Web 服务

开发依赖：
- pytest: 单元测试
- black, ruff: 代码格式化与检查
- mypy: 类型检查

## 贡献指南

欢迎提交 Issue 和 Pull Request。

1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/awesome-feature`)
3. 提交更改 (`git commit -am 'Add awesome feature'`)
4. 推送到分支 (`git push origin feature/awesome-feature`)
5. 创建 Pull Request

请确保代码通过 `black` 格式化和 `pytest` 测试。

## 许可证

MIT License
