0
0
Lập trình
Admin Team
Admin Teamtechmely

Tạo Dữ Liệu OCR Tổng Hợp RTL cho Donut với SynthDoG-RTL

Đăng vào 1 tuần trước

• 3 phút đọc

Giới thiệu

Việc xây dựng mô hình OCR cho các ngôn ngữ viết từ phải sang trái (RTL) như tiếng Ả Rập, Urdu, tiếng Ba Tư hay tiếng Hebrew thường gặp khó khăn do thiếu dữ liệu huấn luyện được chú thích. SynthDoG-RTL là một trình tạo tài liệu tổng hợp được phát triển từ SynthDoG của Donut, mở rộng để xử lý đúng việc hiển thị văn bản RTL. Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách các lập trình viên nâng cao có thể tạo ra các tập dữ liệu tổng hợp quy mô lớn tương thích với Donut.


SynthDoG-RTL là gì?

SynthDoG (Trình tạo tài liệu tổng hợp) được giới thiệu cùng với Donut nhằm tạo dữ liệu huấn luyện theo yêu cầu cho việc hiểu tài liệu. SynthDoG-RTL mở rộng nó bằng:

  • Hỗ trợ định hướng văn bản RTL và hình dạng ngữ cảnh.
  • Bao gồm các tập dữ liệu mẫu, phông chữ và mẫu cho tiếng Ả Rập, Urdu, tiếng Ba Tư, tiếng Hebrew và các ngôn ngữ khác.
  • Cho phép tùy chỉnh cấu hình YAML cho các bố cục, biến dạng và hiệu ứng.

Cài đặt và thiết lập

Clone kho mã và cài đặt các phụ thuộc:

Copy
git clone https://github.com/aiviewz/Synthdog-RTL.git
cd Synthdog-RTL

conda create -n synthdog python=3.8 -y
conda activate synthdog
pip install synthtiger

Đảm bảo cài đặt libraqm để định hình đúng cho tiếng Ả Rập/RTL:

Copy
sudo apt-get install libfreetype6-dev libharfbuzz-dev

Trên macOS, hãy thiết lập:

Copy
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Chuẩn bị tài nguyên

Mỗi ngôn ngữ cần:

  • Corpus: Tệp văn bản UTF-8 trong resources/corpus/ (ví dụ: urdu.txt, arabic.txt).
  • Phông chữ: Đặt phông chữ .ttf/.otf trong resources/font/<lang_code>/.
  • Nền: Các kết cấu tùy chọn trong resources/backgrounds/.

Cấu trúc ví dụ:

Copy
resources/
 ├─ corpus/
 │   ├─ urdu.txt
 │   └─ arabic.txt
 └─ font/
     ├─ ur/
     │   └─ NotoNastaliq.ttf
     └─ ar/
         └─ NotoNaskh.ttf

Cấu hình tạo dữ liệu

Tệp cấu hình YAML (ví dụ: config_ur.yaml) xác định kích thước trang, phạm vi phông chữ, biến dạng và đường dẫn.

Cấu hình ví dụ cho Urdu:

Copy
corpus_path: "resources/corpus/urdu.txt"
font_dir: "resources/font/ur/"
page_width: 1240
page_height: 1754
min_font_size: 20
max_font_size: 40
rotate_angle: [-2, 2]
background_dir: "resources/backgrounds/paper/"

Tạo dữ liệu tổng hợp

Chạy CLI:

Copy
synthtiger -o ./outputs/synthdog_ur -c 1000 -w 8 -v template.py SynthDoG config_ur.yaml

Điều này sẽ tạo ra 1000 mẫu với 8 worker, xuất hình ảnh và văn bản vào ./outputs/synthdog_ur/.

Lặp lại với config_ar.yaml, config_fa.yaml, v.v. cho nhiều ngôn ngữ khác nhau.


Định dạng cho Donut

Donut mong đợi một cặp hình ảnh + JSON. Cấu trúc tập dữ liệu của bạn như sau:

Copy
my_dataset/
 ├─ train/
 │   ├─ metadata.jsonl
 │   ├─ 00000001.png
 │   └─ ...
 ├─ validation/
 │   └─ ...
 └─ test/
     └─ ...

Mỗi dòng trong metadata.jsonl:

Copy
{"file_name": "00000001.png", "ground_truth": "{\"gt_parse\":{\"text_sequence\":\"یہ اردو کا متن ہے\"}}"}

Donut sẽ phân tách văn bản này nội bộ. Đảm bảo rằng file_name trùng khớp với hình ảnh của bạn và text_sequence chứa văn bản đúng với RTL.


Mẹo nâng cao

  • Bố cục: Tùy chỉnh template.py cho nhiều cột, tiêu đề hoặc bảng.
  • Hiệu ứng: Thêm tiếng ồn, mờ hoặc biến dạng phối cảnh trong YAML để tăng tính chân thực.
  • Phông chữ: Sử dụng nhiều phông chữ cho mỗi ngôn ngữ để tránh quá khớp.
  • Văn bản hỗn hợp: Bao gồm các tập dữ liệu tiếng Anh để mô phỏng tài liệu song ngữ.
  • Quy mô: Tạo 10k–100k mẫu để tiền huấn luyện Donut hiệu quả.

Thực hành tốt nhất

  • Tài liệu: Đảm bảo tài liệu hướng dẫn sử dụng rõ ràng cho người dùng mới.
  • Kiểm tra: Thực hiện kiểm tra thường xuyên để đảm bảo dữ liệu được tạo ra chính xác và nhất quán.
  • Tối ưu hóa: Theo dõi hiệu suất của mô hình OCR với dữ liệu đầu vào mới để điều chỉnh kịp thời.

Những cạm bẫy thường gặp

  • Thiếu dữ liệu: Không có đủ dữ liệu để huấn luyện có thể dẫn đến kết quả không chính xác.
  • Phông chữ không tương thích: Sử dụng phông chữ không đúng có thể gây ra lỗi trong việc hiển thị văn bản.

Kết luận

Với SynthDoG-RTL, bạn có thể nhanh chóng khởi tạo các tập dữ liệu OCR tổng hợp cho tất cả các ngôn ngữ chính RTL. Dữ liệu được tạo ra tích hợp liền mạch với Donut, cho phép bạn huấn luyện hoặc tinh chỉnh các mô hình hiểu tài liệu mạnh mẽ ngay cả trong những điều kiện tài nguyên hạn chế.


Tài nguyên tham khảo:

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào