Skip to content

hieu-web/detection_drawing

Repository files navigation

title Engineering Drawing OCR
emoji 📐
colorFrom blue
colorTo indigo
sdk docker
pinned false

📐 Engineering Drawing Detection & OCR System

Dự án này là hệ thống AI đa nhiệm giúp tự động phát hiện và trích xuất thông tin chữ/số từ các Bản vẽ kỹ thuật (Engineering Drawings). Hệ thống kết hợp cấu trúc lõi Detectron2 (ResNeXt-101) để giải quyết bài toán Object Detection trên ảnh kỹ thuật và PaddleOCR để bóc tách dữ liệu văn bản.

🔗 Link Web Demo (Hugging Face Spaces): https://huggingface.co/spaces/hieu098/hieu2004 🔗 Link tải Model Weights tự động: model_final.pth (ResNeXt-101)


🚀 Tính năng nổi bật

  • Nhận diện vùng thông minh: Trích xuất chính xác 3 loại khu vực trên một bản vẽ phức tạp:
    • PartDrawing: Vùng bản vẽ thiết kế, hình chiếu chi tiết.
    • Note: Khu vực chứa các ghi chú kỹ thuật, tiêu chuẩn, vật liệu.
    • Table: Khung tên, bảng kê vật tư thiết bị (BOM - Bill of Materials).
  • Trích xuất văn bản (OCR) mạnh mẽ: Tự động cắt tách các vùng Note/Table và dùng thuật toán OCR cao cấp đọc toàn bộ text kỹ thuật bên trong.
  • Micro-services Dockerized: Hệ thống đóng gói sẵn qua Docker, dễ dàng chạy Web Interface (Gradio) ở mọi nơi.

🛠 Hướng dẫn Cài đặt Môi trường & Chạy Inference

Hệ thống cung cấp hai phương pháp triển khai: sử dụng môi trường thật hoặc giam mình trong môi trường Docker sạch.

Phương án 1: Triển khai trực tiếp (Local Machine)

Yêu cầu: Python 3.10+ đã được cài đặt.

# 1. Clone source code từ kho
git clone [Đường_Dẫn_Repo_Của_Bạn]
cd engineering_drawing

# 2. Cài đặt các thư viện lõi và PyTorch (ưu tiên CPU để chạy web server nhẹ)
pip install torch==2.1.0 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cpu

# 3. Biên dịch Detectron2 từ Source (Yêu cầu có C++ build tools)
pip install ninja pyyaml==5.1
pip install 'git+https://github.com/facebookresearch/detectron2.git'

# 4. Cài đặt hệ sinh thái phụ trợ (OCR, xử lý ảnh)
pip install paddleocr==2.7.0 paddlepaddle==2.6.2 "numpy<2" gradio opencv-python pillow

# Khởi chạy Pipeline giao diện:
python app.py
# Truy cập giao diện tại http://localhost:7860

Phương án 2: Triển khai với Docker (Khuyên dùng)

Source code chuẩn bị sẵn file Dockerfile đã được tùy chỉnh tương thích chặt chẽ để vượt qua các rào cản về dependency.

# Xây dựng Docker Image (khoảng 3GB)
docker build -t drawing-ocr-system .

# Khởi chạy Container
docker run -d -p 7860:7860 drawing-ocr-system

(Lưu ý đối với cả hai phương án: Bạn cần tải tệp model_final.pth đặt tại thư mục gốc chung với file app.py để hệ thống inference có não bộ dự đoán).


🏋️ Hướng dẫn Train Model (Colab/GPU)

Vì huấn luyện cấu trúc X-101 yêu cầu tài nguyên lớn, khuyên dùng Google Colab (T4 GPU).

Quá trình thực hiện:

  1. Chuẩn bị Dữ liệu: Upload thư mục Dataset đã làm nhãn (COCO Format) lên Google Drive.
  2. Quy trình Huấn luyện:
    • Cài đặt PyTorch chuẩn CUDA: pip install torch==2.1.2 ... --index-url .../cu121
    • Cài đặt Detectron2.
    • Tại kịch bản Python, ta nạp bộ cấu hình: COCO-Detection/faster_rcnn_X_101_32x8d_FPN_3x.yaml
    • Đặt Base Learning Rate (cfg.SOLVER.BASE_LR) cẩn thận ở mức 0.00025 để không phá vỡ pre-trained weights.
    • Bật Max Iterations lên 3000 (Khoảng hơn 1 giờ train trên T4).
  3. Kết quả: Quá trình trả về tệp output/model_final.pth chứa toàn bộ tri thức của model.

📝 Báo cáo Kỹ thuật (Short Report)

1. Phương pháp tiếp cận (Approach)

  • Object Detection (Detectron2): Chúng tôi không dùng các hệ thống YOLO truyền thống vốn hay gặp nhiễu cắt xéo, mà quyết định sử dụng dòng Faster R-CNN kết hợp mạng xương sống đồ sộ ResNeXt-101 (32x8d) + FPN. Việc dùng X-101 đem lại khả năng trích lọc đặc trưng (Feature Extraction) vượt trội chuyên biệt đối với các nét vẽ kỹ thuật thanh mảnh và độ tương phản đen-trắng của bản thiết kế.
  • OCR Engine (PaddleOCR): Chúng tôi tích hợp trực tiếp phiên bản Paddle 2.7.0 vào Inference Pipeline. Engine có tham số use_angle_cls=True, giúp dễ dàng bóc chữ từ các Notes bị in nằm dọc hoặc xoay nghiêng – một đặc điểm luôn xuất hiện trên bản vẽ.
  • Tiền xử lý và Hậu Xử Lý (Post-Processing): Code tích hợp kỹ thuật tính toán IOU Threshold và Containment Threshold để tự động xóa bỏ những Bounding Box bị "con đẻ mẹ", bọc lồng vào nhau, xuất ra kết quả gọn gàng nhất.

2. Các thử nghiệm đã triển khai (Experiments)

  • Thử nghiệm Base Model: Từ ResNet-50 ban đầu, mô hình dính hạn chế thiếu nhạy bén với nhãn Table. Khi nâng cấp thành công lên ResNeXt-101, độ hồi đáp (Recall) tăng vọt, mAP cải thiện rõ rệt, đặc biệt các khu vực Note nhỏ nhặt không còn bị miss.
  • Thử nghiệm Dependency Crash: Từng gặp lỗi hệ thống nghiêm trọng do xung đột giữa Torch 2.1 và NumPy 2.0 (mới phát hành). Đội ngũ đã thực nghiệm cô lập hệ thống thông qua tham số chặn đứng phiên bản "numpy<2" ngay trên cấp độ Dockerfile.
  • Kiểm soát Nailing Parameters: Setup ngưỡng Confidence Score test tại 0.5 là ranh giới lý tưởng nhất giúp cân bằng giữa độ tin cậy và hạn chế rác (False Positives).

3. Kết quả đạt được (Results)

  • Khả năng khoanh vùng PartDrawing cực kỳ chính xác kể cả với bản in lỗi mờ nhòe.
  • Phát hiện gọn gàng phần lớn toàn bộ thông tin Text (Tolerances, Material Notes, Scale ratios).
  • Triển khai thành công Full-stack Web Demo phân phối toàn cầu qua Hugging Face Spaces không gặp lỗi Timeout trên Pipeline CPU.

4. Hướng tối ưu hóa nâng cao (Future Improvements)

  • Layout Parser Hồi Quy: Không chỉ nhận diện "ĐÂY LÀ CÁI BẢNG", mà hướng tới cắt cấu trúc thành dòng/cột (table structure recognition) bằng mạng Graph Neural Networks hoặc các pre-trained Table-recognizers đặc thù để xuất trực tiếp file Excel/CSV báo giá sản xuất.
  • Bơm thêm Dữ liệu Data Augmentation: Tăng cường tự động ghép nhiễu vết cà phê, vết xước giấy, độ nhăn, và bản scan chất lượng siêu thấp để ép mô hình train khỏe khoắn hơn.
  • Chuyển đổi TensorRT/ONNX: Hiện tại hệ thống đang được chạy Inference trần thông qua file .pth. Chuyển đổi mã C++ sang inference bằng OpenVINO hoặc ONNX Runtime sẽ có thể ép giảm độ trễ (latency) khi chạy real-time xuống cực thấp.

Developed with 💖, Detectron2, and Gradio.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors