OCR โค้ดสั้น ๆ บน Mac: คัดลอกโค้ดจากบทเรียนและภาพหน้าจอ
โดย Eduard Bruch ผู้พัฒนา Optic · อัปเดตเมื่อ
หากต้องการคัดลอกโค้ดที่แสดงเป็นรูปภาพเท่านั้น ให้ OCR อ่านจากหน้าจอ แล้วตรวจทานก่อนรัน Live Text ใช้ได้กับรูปภาพในแอปของ Apple ส่วนแอป OCR หน้าจอที่มีโหมดโค้ดใช้ได้ทุกที่และคงการเยื้องไว้
คำตอบสั้น ๆ: สำหรับโค้ดในภาพหน้าจอที่เปิดในพรีวิวได้ ลอง Live Text สำหรับโค้ดในวิดีโอ ภาพหน้าจอ IDE ในแชต หรือเอกสารที่เป็นภาพอย่างเดียว ตัวเลือกของผมคือ Optic แอปแถบเมนูที่คัดลอกข้อความในพื้นที่ใดก็ได้ที่คุณลากครอบบนหน้าจอ (4.99 ดอลลาร์สหรัฐ (ซื้อครั้งเดียว) บน Mac App Store) พร้อมโหมดโค้ดสำหรับโค้ด
คำเปิดเผย: ผมสร้าง Optic
ทำไมโค้ดจึงเป็นข้อความที่พิมพ์ซ้ำยากที่สุด
ร้อยแก้วให้อภัยข้อผิดพลาดเล็กน้อยได้ แต่โค้ดไม่ได้ เครื่องหมายขีดกลางแทนขีดล่างทำให้ import พัง วงเล็บที่ขาดไปทำให้ฟังก์ชันพัง และตัวพิมพ์เล็กในที่ที่ผิดเปลี่ยนตัวแปรได้ คำสั่งเชลล์ยาว ๆ รูปแบบ regex และบล็อกคอนฟิกคือสิ่งที่ผู้คนแชร์เป็นภาพหน้าจอ และเป็นสิ่งที่พิมพ์ผิดง่ายที่สุดพอดี
ตัวเลือกที่ 1: Live Text
Live Text ใช้ได้ในที่ที่ Apple รองรับ: รูปภาพในพรีวิว รูปภาพ Quick Look และ Safari รวมถึงเฟรมวิดีโอที่หยุดไว้ในบางโปรแกรมเล่น แต่ใช้ไม่ได้กับหน้าต่างแอปทั่วไป วิดีโอคอล หรือข้อความในส่วนติดต่อผู้ใช้ สำหรับภาพหน้าจอโค้ดภาพเดียวในพรีวิว ลองเลือกและคัดลอกข้อความดูก็คุ้มค่า ตรวจการเยื้องหลังวาง เพราะนั่นคือจุดที่การรู้จำข้อความทั่วไปมักมีปัญหา
ตัวเลือกที่ 2: Optic พร้อมโหมดโค้ด
Optic อ่านโค้ดจากที่ใดก็ได้บนหน้าจอ: หน้าบทเรียน วิดีโอที่หยุดไว้ ภาพหน้าจอใน Slack หรือความคิดเห็นของ pull request
- ในการตั้งค่าของ Optic เปิดโหมดโค้ด (ครั้งเดียว)
- แสดงโค้ดบนหน้าจอ
- คลิกไอคอน Optic ในแถบเมนูแล้วเลือกจับภาพข้อความ
- ลากกรอบครอบโค้ดส่วนนั้น
- วางด้วย Command-V ในเอดิเตอร์หรือเทอร์มินัลของคุณ
สิ่งที่โหมดโค้ดเปลี่ยน:
- คงการเยื้องไว้ Optic คำนวณการเยื้องของแต่ละบรรทัดจากตำแหน่งของข้อความในภาพ บล็อกที่ซ้อนกันจึงออกมาซ้อนกัน ซึ่งสำคัญสำหรับ Python และ YAML
- ปิดการแก้ไขภาษา การรู้จำข้อความปกติอาจ "แก้" คำที่ไม่คุ้นให้เป็นคำจริง สำหรับโค้ด นั่นจะเปลี่ยนตัวระบุ โหมดโค้ดจึงปิดไว้
การรู้จำใช้เฟรมเวิร์ก Vision ของ Apple บน Mac โดยไม่ต้องใช้อินเทอร์เน็ต และ Optic ไม่มีการเข้าถึงเครือข่าย ซึ่งมีประโยชน์เมื่อภาพหน้าจอแสดงโค้ดภายในองค์กร
กรณีทั่วไป
- คำสั่งเทอร์มินัลในเอกสาร คัดลอกคำสั่งติดตั้งหรือบิลด์จากภาพหน้าจอเทอร์มินัล
- ภาพหน้าจอ IDE จากเพื่อนร่วมงาน นำโค้ดจากภาพหน้าจอในแชตไปไว้ในเอดิเตอร์ของคุณ ซึ่งอ่านและทดสอบได้จริง ดูคัดลอกข้อความจากรูปภาพใน Slack บน Mac
- วิดีโอสอนเขียนโค้ด หยุดวิดีโอแล้วจับภาพโค้ดบนหน้าจอ
- โค้ดหลายส่วนจากบทเรียนเดียว จับภาพทีละบล็อก 20 การจับภาพล่าสุดของคุณอยู่ในประวัติแถบเมนู คุณจึงคัดลอกแต่ละรายการซ้ำได้เมื่อไปถึงจุดนั้นในโปรเจกต์
ตรวจทานก่อนรัน
OCR ทำได้ดีกับโค้ดที่ชัดและความละเอียดสูง แต่ยังสับสนตัวอักษรที่คล้ายกันได้: 0 กับ O, 1, l กับ I หรือเครื่องหมายอัญประกาศตรงกับโค้ง โดยเฉพาะในข้อความเล็กหรือเบลอ อ่านสิ่งที่วางไปก่อนรัน และให้การไฮไลต์ไวยากรณ์ของเอดิเตอร์ชี้สิ่งที่ผิดปกติ อย่าวางผลลัพธ์ OCR ลงเชลล์ที่มีสิทธิ์ root โดยตรงโดยไม่อ่าน
ที่ที่ Optic ไม่เหมาะ
- ไม่นำเข้าไฟล์ ไม่เปิดรูปภาพหรือ PDF แสดงบนหน้าจอก่อน
- ไม่ทำเป็นกลุ่ม หนึ่งการจับภาพต่อหนึ่งการลาก ดังนั้น PDF โค้ด 30 หน้าเป็นงานของเครื่องมือ OCR เอกสาร
- ไม่รู้จักไวยากรณ์ Optic รู้จำตัวอักษร ไม่ตรวจหรือจัดรูปแบบโค้ด
- ลายมือ โค้ดในภาพถ่ายไวต์บอร์ดไม่ใช่สิ่งที่ Optic รับรองว่าจะอ่านได้
สำหรับเรื่องภาพหน้าจอของโค้ดเพิ่มเติม ดูคัดลอกโค้ดจากภาพหน้าจอบน Mac
คำถามที่พบบ่อย
คัดลอกโค้ดจากบทเรียน YouTube บน Mac อย่างไร?
หยุดวิดีโอให้โค้ดคมชัด แล้วลากครอบด้วยแอป OCR หน้าจอ เช่น Optic โดยเปิดโหมดโค้ด แล้ววางในเอดิเตอร์ของคุณ
OCR คงการเยื้องของโค้ดไว้หรือไม่?
กับโหมดโค้ดของ Optic ใช่: การเยื้องถูกสร้างขึ้นใหม่จากตำแหน่งของแต่ละบรรทัด หากไม่มีโหมดนี้ เครื่องมือ OCR จำนวนมากให้บรรทัดที่ไม่มีช่องว่างนำหน้า
โค้ดที่ผ่าน OCR เชื่อถือได้พอจะรันหรือไม่?
มักใกล้เคียง แต่ควรตรวจ ข้อผิดพลาดที่พบบ่อยคือตัวอักษรที่หน้าตาคล้ายกัน จึงควรอ่านโค้ดก่อนรัน
Optic ส่งโค้ดของฉันไปที่ใดหรือไม่?
ไม่ การรู้จำทำงานบน Mac และแอปไม่มีการเข้าถึงเครือข่าย
รับ Optic บน Mac App Store · ข้อเท็จจริงทั้งหมดของ Optic Optic ต้องใช้ macOS 14 Sonoma ขึ้นไป กำลังเปรียบเทียบเครื่องมือ? ดู Optic เทียบกับ TextSniper