Quay lại blog
Hướng dẫn · · 9 phút đọc

Cơ chế và cách sử dụng tính năng tự động hóa thao tác GUI bằng nhận dạng hình ảnh

Khi ghi và chạy lại macro, nhiều người gặp hiện tượng “hôm qua còn chạy được nhưng hôm nay vị trí nhấp lại bị lệch”. Nguyên nhân chủ yếu là macro đã ghi hoạt động dựa trên “tọa độ cố định trên màn hình”. Cửa sổ mở ở vị trí khác, độ phân giải màn hình thay đổi hoặc macro được chạy trên một màn hình khác—những thay đổi này có thể khiến thao tác nhấp rơi vào sai vị trí. Tự động hóa bằng “nhận dạng hình ảnh” giải quyết tận gốc vấn đề này.

Nhận dạng hình ảnh là công nghệ tìm các phần tử trên màn hình dựa trên “diện mạo” thay vì tọa độ. Bạn đăng ký trước một hình ảnh nhỏ của nút muốn nhấp; khi chạy lại, công cụ sẽ quét toàn bộ màn hình để tìm vị trí khớp với hình ảnh đó. Dù nút đã di chuyển đến đâu, miễn là diện mạo không đổi, công cụ vẫn có thể tìm và nhấp chính xác—đó là ưu điểm của nhận dạng hình ảnh.

Nhận dạng hình ảnh tìm phần tử bằng cách nào?

Cơ chế rất đơn giản. Trước tiên, hãy chụp và lưu một hình ảnh nhỏ (hình ảnh mẫu) của phần tử muốn dùng làm mốc—chẳng hạn nút “Gửi” hoặc một biểu tượng cụ thể. Khi macro chạy, công cụ sẽ chụp màn hình tại thời điểm đó và tìm trong màn hình vùng khớp với hình ảnh mẫu. Nếu tìm thấy, công cụ trả về tọa độ tâm của vùng đó, rồi macro di chuyển chuột đến đó và nhấp.

Thiết lập quan trọng ở đây là “ngưỡng khớp (độ chính xác đối sánh)”. Hình ảnh không nhất thiết phải trùng khớp hoàn toàn 100%; chẳng hạn, bạn có thể thiết lập để mức tương đồng từ 90% trở lên được coi là “khớp”. Tăng ngưỡng sẽ giảm nhận dạng nhầm, nhưng những khác biệt nhỏ về diện mạo có thể khiến công cụ không tìm thấy mục tiêu. Ngược lại, giảm ngưỡng sẽ linh hoạt hơn nhưng làm tăng nguy cơ nhận nhầm một phần tử tương tự. Bí quyết là thử nghiệm trên màn hình thực tế để tìm ra giá trị phù hợp.

Cách lựa chọn giữa FIND_IMAGE và WAIT_IMAGE

makuroku cung cấp hai lệnh tiêu biểu để sử dụng nhận dạng hình ảnh từ tập lệnh. FIND_IMAGE là lệnh tìm xem “ngay lúc này hình ảnh đó nằm ở đâu trên màn hình”. Vì có thể lưu tọa độ tìm thấy vào biến, lệnh này phù hợp với các trường hợp như “nhấp vào một nút không biết sẽ xuất hiện ở đâu”.

Trong khi đó, WAIT_IMAGE là lệnh “chờ cho đến khi hình ảnh đó xuất hiện”. Việc tải trang Web hoặc khởi động ứng dụng cần thời gian; nếu thực hiện thao tác tiếp theo trước khi quá trình hoàn tất thì thao tác sẽ thất bại. Với WAIT_IMAGE, bạn có thể tạo quy trình tự động hóa đáng tin cậy, phù hợp với trạng thái màn hình, chẳng hạn “chờ biểu tượng báo tải xong xuất hiện rồi mới tiếp tục”. Kết hợp hai lệnh này giúp quy trình tự động hóa bền vững trước những “biến động về thời điểm” thường gặp trong công việc thực tế và ít bị lỗi hơn.

Những trường hợp nhận dạng hình ảnh đặc biệt hữu ích

Nhận dạng hình ảnh đặc biệt hiệu quả trong những tình huống sau.

  • Các ứng dụng mà vị trí hiển thị của nút hoặc cửa sổ thay đổi mỗi lần
  • Khi muốn đợi quá trình tải hoặc xử lý hoàn tất rồi mới tiếp tục
  • Các màn hình có bố cục động mà việc chỉ định tọa độ không thể xử lý đầy đủ
  • Khi muốn kích hoạt xử lý lúc một biểu tượng hoặc trạng thái cụ thể xuất hiện

Ngược lại, nhận dạng hình ảnh cũng có những giới hạn. Việc xác định khớp thường trở nên thiếu ổn định đối với các thiết kế có hình thức mục tiêu thay đổi thường xuyên, cũng như các thành phần bán trong suốt hoặc có hoạt ảnh. Ngoài ra, do phải quét toàn bộ màn hình nên thời gian xử lý sẽ lâu hơn một chút so với việc chỉ định tọa độ. Thay vì thay thế mọi thứ bằng nhận dạng hình ảnh, hãy phân chia hợp lý: “nơi nào tọa độ là đủ thì dùng tọa độ, chỉ dùng nhận dạng hình ảnh ở nơi vị trí thay đổi”. Đây là bí quyết để tạo ra quy trình tự động hóa vừa thực tế vừa nhanh chóng.

Mẹo chuẩn bị hình ảnh mẫu hiệu quả

Độ chính xác của nhận dạng hình ảnh phụ thuộc rất nhiều vào chất lượng của hình ảnh mẫu được đăng ký. Có một số mẹo hữu ích. Trước hết, hãy cắt vùng dùng làm dấu hiệu nhận biết sao cho “nhỏ và đặc trưng”. Thay vì cắt toàn bộ nút, chỉ nên lấy biểu tượng hoặc chữ đặc trưng của nút đó để tránh nhầm lẫn với các thành phần khác. Ngược lại, nếu chọn vùng quá lớn, những thay đổi nhỏ xung quanh như màu nền hoặc thành phần lân cận có thể khiến việc đối chiếu thất bại.

Tiếp theo, hãy tránh các phần có màu sắc hoặc trạng thái dễ thay đổi. Nếu dùng một nút đổi màu khi di chuột lên hoặc một vùng được tô sáng khi chọn làm dấu hiệu nhận biết, việc đối chiếu có thể thất bại tùy theo trạng thái. Hãy chọn phần ổn định, luôn giữ nguyên hình thức. Ngoài ra, khi tỷ lệ hiển thị của màn hình thay đổi thì kích thước hình ảnh cũng thay đổi, vì vậy cách chắc chắn nhất là chụp hình ảnh mẫu ở đúng độ phân giải và tỷ lệ sẽ dùng khi vận hành thực tế. Việc tích lũy những lưu ý nhỏ như vậy sẽ nâng cao đáng kể tỷ lệ nhận dạng hình ảnh thành công.

Kết hợp nhận dạng hình ảnh với các phương pháp khác

Nhận dạng hình ảnh rất mạnh mẽ nhưng không phải là giải pháp vạn năng. Để xây dựng quy trình tự động hóa vững chắc trong công việc thực tế, cách đúng đắn là kết hợp nhiều phương pháp vào đúng trường hợp. Với nút có vị trí hoàn toàn không thay đổi, việc chỉ định tọa độ nhanh là đủ. Chỉ giao cho nhận dạng hình ảnh những nút thay đổi vị trí hoặc các thành phần mất thời gian mới xuất hiện. Ngoài ra, nếu muốn đọc thông tin chữ trên màn hình, hãy dùng OCR (nhận dạng ký tự); nếu muốn tích hợp với dịch vụ bên ngoài, hãy dùng giao tiếp HTTP. Như vậy, mỗi phương pháp được sử dụng tùy theo mục đích.

makuroku cho phép tự do kết hợp các phương pháp này trong một tập lệnh duy nhất. Chẳng hạn: “dùng WAIT_IMAGE để đợi màn hình sẵn sàng, dùng FIND_IMAGE để tìm và nhấp vào nút, dùng OCR để đọc giá trị kết quả, rồi phân nhánh xử lý theo điều kiện”. Nhờ đó, bạn có thể mô tả một quy trình tự động hóa linh hoạt, gần giống thao tác của con người, dưới dạng một luồng thống nhất. Đừng cố chấp với một phương pháp duy nhất; hãy kết hợp chúng để tận dụng ưu điểm của từng phương pháp. Tư duy này là con đường ngắn nhất để tạo ra quy trình tự động hóa thực sự hữu ích trong công việc.

Cách xử lý khi nhận dạng hình ảnh không hoạt động tốt

Khi bắt đầu sử dụng tính năng nhận dạng hình ảnh, đôi khi bạn có thể gặp tình huống không tìm thấy hình ảnh dù đã đăng ký. Có một số nguyên nhân có thể xảy ra. Phổ biến nhất là tỷ lệ hiển thị hoặc độ phân giải màn hình khi chụp ảnh mẫu khác với lúc thực sự tìm kiếm. Khi đó kích thước hình ảnh thay đổi nên không thể khớp. Cách xử lý chắc chắn nhất là chụp lại ảnh mẫu với cùng thiết lập của môi trường vận hành.

Nguyên nhân phổ biến tiếp theo là ngưỡng khớp quá nghiêm ngặt. Nếu yêu cầu khớp hoàn toàn 100%, chỉ một khác biệt rất nhỏ về sắc màu hoặc khử răng cưa cũng có thể khiến hệ thống không tìm thấy hình ảnh. Việc hạ nhẹ ngưỡng và coi độ tương đồng khoảng 90% là khớp thường giúp nhận dạng ổn định hơn. Tuy nhiên, nếu hạ quá thấp thì số lần nhận dạng nhầm sẽ tăng, vì vậy bí quyết là thử trên màn hình thực tế để tìm giá trị phù hợp.

Nếu vẫn chưa giải quyết được, hãy xem lại chính vùng đã chọn làm mẫu. Nếu dùng một phần có nền thường xuyên thay đổi hoặc được tô sáng khi ở trạng thái được chọn làm dấu hiệu, diện mạo của nó sẽ thay đổi tùy tình huống và không còn khớp. Thu hẹp vùng mẫu vào một phần đặc trưng, ổn định và luôn giữ nguyên diện mạo — chẳng hạn như biểu tượng hoặc logo riêng — sẽ tăng tỷ lệ thành công. “Chọn dấu hiệu dễ tìm” là bí quyết quan trọng nhất để nhận dạng hình ảnh hoạt động ổn định.

Ban đầu, việc tinh chỉnh nhận dạng hình ảnh có thể hơi mất công, nhưng một khi đã thiết lập đúng, nó sẽ mang lại sự linh hoạt mà cách chỉ định tọa độ không thể đạt được. Dù cửa sổ di chuyển hay bố cục thay đổi, hệ thống vẫn phản ứng chính xác miễn là “diện mạo” không đổi. Độ vững chắc này mang lại sự an tâm lớn khi sử dụng tự động hóa lâu dài trong công việc thực tế.

Kịch bản thực tế sử dụng nhận dạng hình ảnh

Hãy xem khả năng thực sự của nhận dạng hình ảnh qua một kịch bản cụ thể. Ví dụ, giả sử chúng ta muốn tự động hóa việc tải dữ liệu định kỳ từ một ứng dụng Web. Mỗi lần đăng nhập, bố cục màn hình của ứng dụng này lại thay đổi đôi chút và vị trí nút tải xuống cũng không cố định. Macro dựa trên tọa độ không thể thích ứng với những thay đổi đó và sẽ nhanh chóng ngừng hoạt động.

Đây chính là lúc nhận dạng hình ảnh phát huy tác dụng. Trước tiên, hãy đăng ký biểu tượng của nút tải xuống làm ảnh mẫu. Macro dùng WAIT_IMAGE để chờ trang tải xong, sau đó dùng FIND_IMAGE để tìm nút tải xuống trên màn hình và nhấp vào vị trí của nó. Dù nút xuất hiện ở đâu, miễn là diện mạo không đổi thì hệ thống vẫn có thể tìm và nhấp chính xác, tạo nên quy trình tự động hóa ổn định, không bị ảnh hưởng bởi thay đổi bố cục.

Ngoài ra, nếu dùng WAIT_IMAGE để chờ thông báo tải xuống hoàn tất xuất hiện rồi mới chuyển sang bước tiếp theo, bạn sẽ không bỏ sót thao tác ngay cả khi kết nối chậm. Theo cách này, nhận dạng hình ảnh đưa vào tự động hóa khả năng phán đoán vốn rất tự nhiên đối với con người: “quan sát trạng thái màn hình và thao tác đúng chỗ vào đúng thời điểm”. Chính vì vậy, bạn có thể tạo ra quy trình tự động hóa khó bị hỏng ngay cả trong môi trường công việc thực tế luôn đầy biến động.

Những kịch bản như vậy không chỉ áp dụng cho ứng dụng Web mà còn có thể dùng trong ứng dụng máy tính, hệ thống nghiệp vụ và nhiều tình huống khác. Với nhận dạng hình ảnh, ngay cả những công việc trước đây phải từ bỏ tự động hóa vì “vị trí thay đổi” hoặc “không thể đoán trước thời điểm” cũng trở nên khả thi. Trước tiên, hãy nghĩ đến một công việc từng khiến bạn gặp khó khăn vì vị trí bị lệch mỗi lần và bắt đầu bằng việc dùng nhận dạng hình ảnh để giúp nó hoạt động ổn định.

Để xây dựng quy trình tự động hóa khó bị hỏng

Một quy trình tự động hóa có thực sự “hữu dụng” tại nơi làm việc hay không phụ thuộc vào khả năng chịu được các tình huống ngoài dự kiến. Tự động hóa chỉ dựa vào tọa độ đã ghi có thể hoạt động tốt trong lần đầu, nhưng thường dừng lại chỉ vì môi trường thay đổi đôi chút. Khi kết hợp nhận dạng hình ảnh, bạn có thể đưa vào tự động hóa những phán đoán con người thực hiện trong vô thức, chẳng hạn như “nhấp dựa trên diện mạo” hoặc “chờ đến khi màn hình sẵn sàng”.

Ngoài khả năng ghi thao tác qua GUI, makuroku còn được trang bị sẵn các lệnh nhận dạng hình ảnh như FIND_IMAGE và WAIT_IMAGE. Trước tiên, hãy ghi lại thao tác để tạo khung cơ bản, sau đó chỉ thay thế bằng nhận dạng hình ảnh ở những vị trí có thể thay đổi hoặc những bước cần chờ đúng thời điểm. Sự kết hợp này giúp bạn xây dựng quy trình tự động hóa không bị hỏng ngay khi gặp tình huống ngoài dự kiến đầu tiên, mà có thể thích ứng với sự lộn xộn của môi trường thực tế. Vì có thể dùng thử miễn phí tất cả tính năng, trước hết hãy sử dụng nhận dạng hình ảnh để ổn định “những công việc từng gây khó khăn vì vị trí luôn bị lệch sau mỗi lần thực hiện”.

Dùng thử miễn phí

Tự động hóa với makuroku

makuroku ghi lại chuột và bàn phím của bạn, sau đó phát lại tự động. Thêm script SCR và tích hợp AI (MCP) khi cần thêm. Tất cả tính năng miễn phí trên Windows.