Hệ thống tự động phát hiện và trích xuất thông tin từ bản vẽ kỹ thuật bằng Deep Learning. Hệ thống sử dụng Detectron2 để nhận diện các thành phần (PartDrawing, Note, Table) và PaddleOCR để trích xuất nội dung văn bản.
- Object Detection: Phát hiện chính xác 3 loại thực thể trên bản vẽ:
PartDrawing: Khu vực chứa bản vẽ chi tiết.Note: Các ghi chú kỹ thuật.Table: Bảng thông số kỹ thuật (Title block, BOM).
- Automated OCR: Tự động nhận diện văn bản bên trong các block
NotevàTable. - Web Interface: Giao diện trực quan được xây dựng bằng Gradio.
- Dockerized: Sẵn sàng triển khai trên Hugging Face Spaces hoặc Server riêng.
Yêu cầu: Python 3.10+
# Clone repository
git clone https://github.com/hieu-web/engineering_drawing.git
cd engineering_drawing
# Cài đặt PyTorch (Bản CPU được tối ưu cho deployment)
pip install torch==2.1.0 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cpu
# Cài đặt Detectron2
pip install 'git+https://github.com/facebookresearch/detectron2.git'
# Cài đặt các thư viện khác (PaddleOCR, Gradio, OpenCV)
pip install -r requirements.txtdocker build -t drawing-ocr .
docker run -p 7860:7860 drawing-ocrQuá trình training được thực hiện trên Google Colab để tận dụng GPU T4.
- Chuẩn bị dữ liệu: Cấu trúc dữ liệu theo định dạng COCO:
dataset/ ├── images/ └── result.json (COCO annotations) - Chạy Notebook: Mở file
Untitled6.ipynbtrên Colab. - Cấu hình Training:
- Backbone:
faster_rcnn_R_50_FPN_3x. - Số lượng class: 3 (
Note,PartDrawing,Table). - Số vòng lặp: 3000 iterations.
- Base Learning Rate: 0.00025.
- Backbone:
- Lưu kết quả: Sau khi train xong, copy file
model_final.pthvào thư mục gốc của dự án này.
Để khởi động giao diện Web Demo cục bộ:
python app.pySau đó truy cập: http://localhost:7860
Giao diện cho phép:
- Upload ảnh bản vẽ (jpg, png, webp).
- Xem kết quả bounding box trực quan.
- Nhận kết quả JSON chi tiết và nội dung văn bản OCR chuyển đổi.
- Model Weights: Google Drive Link
- Web Demo URL: https://huggingface.co/spaces/hieu098/hieu1234
- Detection: Sử dụng Faster R-CNN với backbone ResNet-50 kết hợp FPN. Đây là kiến trúc cân bằng tốt giữa độ chính xác và tốc độ.
- OCR: Sử dụng PaddleOCR (bản 2.7.0) vì khả năng xử lý văn bản tiếng Anh/Số trong môi trường kỹ thuật rất mạnh mẽ, hỗ trợ tốt xoay góc văn bản.
- Pipeline: Ảnh đầu vào -> Detect các vùng -> Crop Note/Table -> Tiền xử lý -> OCR -> Tổng hợp kết quả JSON.
- Xử lý NumPy 2.0: Team đã giải quyết lỗi crash do xung đột giữa Torch 2.1 và NumPy 2.0 bằng cách giới hạn
numpy<2trong Docker và requirements. - Tối ưu CPU: Cấu hình Detectron2 chạy hoàn toàn trên CPU để giảm chi phí deployment mà vẫn đảm bảo tốc độ inference ~2-5s/ảnh.
- Threshold: Thử nghiệm
score_thresholdtừ 0.3 đến 0.7; mức 0.5 cho kết quả tối ưu nhất, hạn chế dương tính giả (False Positive).
- Mô hình nhận diện tốt các khung tên (Table) và ghi chú (Note) ngay cả với bản vẽ có mật độ chi tiết dày đặc.
- OCR đọc được các thông số kích thước và bảng vật tư với độ chính xác cao.
- Data Augmentation: Thêm các phép xoay, nhiễu và làm mờ để mô hình bền bỉ hơn với ảnh chụp bản vẽ từ thực tế.
- Fine-tuning OCR: Train thêm một module OCR chuyên biệt cho font chữ kỹ thuật để giảm sai sót ở các ký tự đặc biệt (phi, độ, dung sai).
- Optimized Inference: Chuyển đổi mô hình sang định dạng ONNX hoặc TensorRT để tăng tốc độ inference lên gấp 3-5 lần.