Cách đọc văn bản từ màn hình vào macro
OCR màn hình trong macro Windows: đọc số, trạng thái hoặc tên từ bất kỳ cửa sổ nào, rồi quyết định sẽ làm gì với nó.
Cập nhật ngày 18 tháng 9 năm 2026 · Đọc văn bản trên màn hình thuộc gói Pro trong Myna Recorder; mọi tài khoản mới đều được dùng thử miễn phí 7 ngày.
1. read_text làm gì
Hầu hết công cụ macro chỉ có thể nhấp và gõ, nhưng không biết màn hình đang hiển thị gì. read_text đọc một hình chữ nhật trên màn hình vào một biến, và từ đó giá trị có thể được gõ ở nơi khác, so sánh, hoặc dùng trong một thông báo:
total = read_text(region=(820, 400, 180, 40), single_line=True)
message_box("The order total was ${total}")
2. Chọn vùng
Luôn truyền region=(x, y, width, height). Đọc cả màn hình sẽ thu nhỏ nó đến mức văn bản giao diện thông thường không còn đọc được. Một vùng có kích thước bằng ô bạn quan tâm thì nhanh và chính xác. single_line=True gộp mọi thứ đọc được thành một dòng, đây là điều bạn muốn với một số hoặc một tên. Mỗi số trong vùng có thể là một biến hoặc một phép cộng, nên một vùng có thể theo sau một kết quả khớp được tìm bằng wait_for.
3. Ba bộ đọc
| engine= | Đây là gì | Tốn tín dụng | Được mang theo trong chương trình đã xuất |
|---|---|---|---|
| "builtin" | Mặc định. Chạy trên máy tính của bạn. | Không | Có |
| "tesseract" | Một bộ đọc cục bộ thứ hai. Đọc một số màn hình tốt hơn và một số kém hơn bộ tích hợp, và nhận page_mode= để kiểm soát cách hình ảnh được chia thành các dòng. Hãy thử khi kết quả đọc gần đúng nhưng sai. | Không | Có |
| "ai" | Một mô hình nhận dạng chữ trên máy chủ của chúng tôi, dành cho các văn bản mà cả hai bộ đọc cục bộ đều đọc sai. | Có | Không |
Engine được chọn theo từng bước, nên một macro có thể dùng bộ đọc miễn phí ở mọi nơi và bộ đọc AI chỉ ở trường quan trọng.
4. Làm sạch và dùng kết quả
total = read_text(region=(820, 400, 180, 40)).to_number()
if total < 1000:
notify("Total looks low: ${total}")
Các phương thức làm sạch kết quả trả về; .to_number() là phương thức bạn sẽ dùng nhiều nhất. Vùng trống sẽ lưu một chuỗi rỗng và lần chạy tiếp tục, nên hãy kiểm tra điều kiện bạn viết với cả giá trị trống lẫn giá trị có nội dung. Khung biến hiển thị mọi biến trực tiếp trong khi chạy, đây là cách nhanh nhất để xem bộ đọc thực sự trả về gì.
5. Khi nào thì hỏi AI
read_text chỉ chuyển hình ảnh thành chữ. Để suy luận về màn hình, dùng ask_ai: "có bao nhiêu hàng màu đỏ?", "có hộp thoại lỗi không?". Có ba vai trò: "count" trả về một số và vị trí của từng thứ, để macro có thể nhấp vào nó; "explain" trả về một câu cho nhật ký hoặc thông báo; "read" chuyển văn bản bằng mô hình bạn đã chọn. Hãy dùng một vùng nhỏ vì cùng lý do: một mô hình có thể đếm các thứ trên toàn màn hình nhưng sau đó không định vị được chúng. Mỗi lần gọi tốn tín dụng và mỗi lần chạy giới hạn 60 lần gọi AI. Chi tiết có trong hướng dẫn sử dụng.
6. Theo dõi văn bản trong khi macro chạy
Một bước chỉ đọc một lần, tại nơi bạn đặt nó. Một hàng giám sát được đặt thành Ask AI sẽ theo dõi trong suốt lần chạy, hoặc tự chạy sau khi nhấn Start watching, và kích hoạt khi câu trả lời xuất hiện hoặc biến mất. Nó có thể hiện cửa sổ bật lên, gửi tin nhắn Telegram hoặc Discord kèm ảnh chụp màn hình, hoặc dừng macro. Nhờ vậy bạn được báo về biểu ngữ "phiên đã hết hạn" lúc 3 giờ sáng mà không cần một bước riêng cho nó trong mỗi vòng lặp.
7. Chi phí, gói và xuất
- Đọc văn bản trên màn hình và ask_ai có trong gói Pro, gói này cũng đi kèm 3.000 tín dụng mỗi 30 ngày. Hai bộ đọc cục bộ không bao giờ tốn tín dụng.
- engine="ai", ask_ai và các hàng giám sát AI đều tốn tín dụng và chặn xuất thành chương trình. Macro đọc bằng bộ đọc tích hợp hoặc Tesseract vẫn xuất bình thường, với bộ đọc nằm trong tệp.
- Các gói và gói tín dụng có trên trang giá.