Chuyển đến nội dung

OCR đoạn mã trên Mac: sao chép mã từ hướng dẫn và ảnh chụp màn hình

Tác giả: Eduard Bruch, nhà phát triển Optic · Cập nhật

Để sao chép mã chỉ hiển thị dưới dạng hình ảnh, hãy để OCR đọc nó từ màn hình rồi xem lại trước khi chạy. Live Text dùng được cho hình ảnh trong các ứng dụng của Apple; ứng dụng OCR màn hình có chế độ mã hoạt động ở mọi nơi và giữ thụt lề.

Trả lời ngắn: với mã trong ảnh chụp màn hình bạn mở được trong Xem trước (Preview), hãy thử Live Text. Với mã trong video, ảnh chụp IDE trong cuộc trò chuyện hoặc tài liệu chỉ có hình ảnh, lựa chọn của tôi là Optic, một ứng dụng thanh menu sao chép văn bản trong bất kỳ vùng nào bạn kéo qua màn hình (4,99 USD (mua một lần) trên Mac App Store), với Chế độ mã cho mã.

Công khai: tôi xây dựng Optic.

Vì sao mã là văn bản khó gõ lại nhất

Văn xuôi tha thứ lỗi nhỏ; mã thì không. Một dấu gạch nối thay cho dấu gạch dưới làm hỏng một import, thiếu một dấu ngoặc làm hỏng một hàm, và một chữ thường sai chỗ đổi một biến. Các lệnh shell dài, mẫu regex và khối cấu hình chính là thứ mọi người chia sẻ dưới dạng ảnh chụp màn hình, và chính là thứ dễ gõ sai nhất.

Cách 1: Live Text

Live Text hoạt động ở nơi Apple hỗ trợ: hình ảnh trong Xem trước (Preview), Ảnh (Photos), Quick Look và Safari, và khung hình video tạm dừng trong một số trình phát. Nó không hoạt động trên cửa sổ ứng dụng bất kỳ, cuộc gọi video hay văn bản giao diện. Với một ảnh chụp màn hình mã trong Xem trước (Preview), chọn và sao chép văn bản đáng để thử. Hãy kiểm tra thụt lề sau khi dán, vì đó là nơi nhận dạng văn bản thông thường hay gặp khó.

Cách 2: Optic với Chế độ mã

Optic đọc mã từ bất kỳ đâu trên màn hình: trang hướng dẫn, video tạm dừng, ảnh chụp màn hình trong Slack hoặc bình luận pull request.

  1. Trong Cài đặt của Optic, bật Chế độ mã (một lần).
  2. Hiển thị mã trên màn hình.
  3. Nhấp vào biểu tượng Optic trên thanh menu và chọn Chụp văn bản.
  4. Kéo một khung qua đoạn mã.
  5. Dán vào trình soạn thảo hoặc terminal bằng Command-V.

Chế độ mã thay đổi gì:

  • Thụt lề được giữ. Optic tính thụt lề của từng dòng từ vị trí văn bản trong hình ảnh, nên các khối lồng nhau xuất ra vẫn lồng nhau. Điều đó quan trọng với Python và YAML.
  • Tắt sửa ngôn ngữ. Nhận dạng văn bản thông thường có thể "sửa" từ lạ về phía từ thật. Với mã, điều đó sẽ đổi tên định danh, nên Chế độ mã tắt nó đi.

Việc nhận dạng dùng framework Vision của Apple trên Mac, không cần internet, và Optic không có quyền truy cập mạng. Điều đó hữu ích khi ảnh chụp màn hình hiển thị mã nội bộ.

Các trường hợp điển hình

  • Lệnh terminal trong tài liệu. Sao chép lệnh cài đặt hoặc build từ ảnh chụp terminal.
  • Ảnh chụp IDE từ đồng nghiệp. Lấy mã từ ảnh chụp màn hình trong cuộc trò chuyện vào trình soạn thảo của bạn, nơi bạn thực sự đọc và thử được. Xem sao chép văn bản từ hình ảnh Slack trên Mac.
  • Video lập trình. Tạm dừng video và chụp mã trên màn hình.
  • Nhiều đoạn mã từ một hướng dẫn. Chụp từng khối lần lượt; 20 lần chụp gần nhất của bạn nằm lại trong lịch sử thanh menu, nên bạn có thể sao chép lại từng cái khi đến lượt trong dự án.

Xem lại trước khi chạy

OCR tốt với mã rõ nét, độ phân giải cao, nhưng vẫn có thể nhầm các ký tự giống nhau: 0 và O, 1, l và I, hoặc dấu nháy thẳng và cong, đặc biệt trong văn bản nhỏ hoặc mờ. Hãy đọc qua những gì bạn đã dán trước khi chạy, và để tô sáng cú pháp của trình soạn thảo chỉ ra bất cứ điều gì lạ. Đừng dán kết quả OCR thẳng vào shell có quyền root mà không đọc nó.

Nơi Optic không phù hợp

  • Không nhập tệp. Nó không mở hình ảnh hay PDF; hãy hiển thị chúng trên màn hình trước.
  • Không xử lý theo lô. Một lần chụp cho mỗi lần kéo, nên một PDF 30 trang liệt kê mã là việc của công cụ OCR tài liệu.
  • Không hiểu cú pháp. Optic nhận dạng ký tự; nó không kiểm tra hay định dạng mã.
  • Chữ viết tay. Mã trên ảnh bảng trắng không phải thứ Optic hứa hẹn là đọc được.

Để biết thêm về ảnh chụp màn hình mã, xem sao chép mã từ ảnh chụp màn hình trên Mac.

FAQ

Làm thế nào để sao chép mã từ video hướng dẫn YouTube trên Mac?

Tạm dừng video để mã rõ nét, rồi kéo qua nó bằng ứng dụng OCR màn hình như Optic với Chế độ mã bật, và dán vào trình soạn thảo.

OCR có giữ thụt lề của mã không?

Với Chế độ mã của Optic, có: thụt lề được dựng lại từ vị trí của từng dòng. Khi không có nó, nhiều công cụ OCR trả về các dòng không có khoảng trắng đầu dòng.

Mã qua OCR có đủ tin cậy để chạy không?

Thường là gần đúng, nhưng hãy kiểm tra. Các ký tự trông giống nhau là lỗi thường gặp, nên hãy đọc mã trước khi chạy.

Optic có gửi mã của tôi đi đâu không?

Không. Việc nhận dạng chạy trên Mac và ứng dụng không có quyền truy cập mạng.

Tải Optic trên Mac App Store · Toàn bộ thông tin về Optic. Optic cần macOS 14 Sonoma trở lên. Đang so sánh công cụ? Xem Optic so với TextSniper.