Skip to content

matsuokan/Hand2CAD

Repository files navigation

Hand2CAD 🏗️

手書き図面 → CADデータ 自動変換システム

Discord に手書き図面の画像を送るだけで、業務利用可能なCADデータ(DXF/JWW/PDF/SVG)を取得できるAI搭載変換システムです。

✨ 特長

  • 🤖 AI画像解析 - OpenCV + コンピュータビジョンによる線分・形状の自動認識
  • 📐 4形式出力 - DXF (AutoCAD) / JWW (Jw_cad) / PDF / SVG
  • 💬 Discord Bot - Discord チャンネルから直接変換
  • 高速変換 - 30秒以内の非同期処理
  • 🔌 REST API -FastAPI による高性能API
  • 🐳 Docker対応 - ワンコマンドデプロイ

🚀 クイックスタート

Docker(推奨)

cp .env.example .env
# .env を編集(DISCORD_TOKENを設定)

docker-compose up -d --build

直接実行

python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
python -m app.main

📝 使い方

Discord

!cad convert             # DXFに変換
!cad convert dxf,jww     # DXFとJWWに変換
!cad convert all         # 全形式に変換
!cad help                # ヘルプ

API

# 同期変換
curl -X POST http://localhost:8000/api/v1/convert-sync \
  -F "file=@drawing.png" -F "formats=dxf" -o output.dxf

# 非同期変換
curl -X POST http://localhost:8000/api/v1/convert \
  -F "file=@drawing.png" -F "formats=dxf,jww,pdf,svg"

API Docs: http://localhost:8000/docs

📁 プロジェクト構造

Hand2CAD/
├── app/
│   ├── main.py              # FastAPI エントリポイント
│   ├── config.py             # 設定管理
│   ├── api/                  # API層
│   │   ├── routes.py         # ルーティング
│   │   └── models.py         # データモデル
│   ├── core/                 # コア処理
│   │   ├── image_analyzer.py # AI画像解析
│   │   ├── preprocessor.py   # 前処理
│   │   ├── line_detector.py  # 線分検出
│   │   └── shape_detector.py # 形状検出
│   ├── exporters/            # CAD出力
│   │   ├── dxf_exporter.py   # DXF
│   │   ├── jww_exporter.py   # JWW (Jw_cad)
│   │   ├── pdf_exporter.py   # PDF
│   │   └── svg_exporter.py   # SVG
│   └── discord_bot/          # Discord連携
│       └── bot.py
├── tests/                    # テスト
├── docs/                     # ドキュメント
├── Dockerfile
├── docker-compose.yml
└── requirements.txt

🔧 設定

.env ファイルで設定を管理:

変数 説明 デフォルト
DISCORD_TOKEN Discord Bot Token 必須
PORT サーバーポート 8000
MAX_IMAGE_SIZE_MB 最大画像サイズ 10
CONVERSION_TIMEOUT_SEC タイムアウト秒数 30
MIN_LINE_LENGTH 最小線分長(px) 30

📖 ドキュメント

🧪 テスト

pip install pytest
pytest tests/ -v

📄 ライセンス

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages