`TextSnatcher` สำหรับคัดลอกข้อความจากรูปภาพบนเดสก์ท็อป Linux
(github.com/RajSolai)- TextSnatcher เป็น แอป OCR สำหรับ Linux ที่ช่วยคัดลอกข้อความในรูปภาพได้อย่างรวดเร็ว โดยลากภาพเพื่อทำการรู้จำอักขระแล้วนำผลลัพธ์ไปวางต่อได้
- ฟีเจอร์หลักคือ รองรับหลายภาษา, คัดลอกข้อความจากรูปภาพ, ลากบนรูปภาพใดก็ได้แล้ววาง, และใช้งานได้รวดเร็วและง่ายดาย
- ใช้ Tesseract OCR 4.x สำหรับการรู้จำอักขระ พร้อมให้ลิงก์ไปยังเอกสาร Tesseract และโครงการ Tesseract
- แจกจ่ายผ่าน Flathub และ AppCenter ของ elementary OS และหากต้องการคอมไพล์เองจะใช้ขั้นตอนติดตั้งที่อิงกับ Meson และ Ninja
- การรันต้องใช้ scrot, tesseract-ocr และข้อมูลภาษา Tesseract โดยโครงการระบุว่าจะกลับมาพร้อมอัปเดตและการแก้ไขในเดือนหน้า
สิ่งที่ TextSnatcher ทำ
- TextSnatcher เป็นแอปสำหรับ Linux ที่คัดลอกข้อความจากรูปภาพและทำงาน OCR ได้ภายในไม่กี่วินาที
- ผู้ใช้สามารถ ลาก บนรูปภาพเพื่อคัดลอกและวางข้อความได้
- ความสามารถที่มี:
-
รองรับหลายภาษา
- คัดลอกข้อความจากรูปภาพด้วยการลาก
- ลากบนรูปภาพใดก็ได้แล้ววาง
- ใช้งานได้รวดเร็วและง่ายดาย
-
เอนจิน OCR และโครงการที่เกี่ยวข้อง
- TextSnatcher ใช้ Tesseract OCR 4.x สำหรับการรู้จำอักขระ
- เอกสารอ้างอิงที่เกี่ยวข้องมี เอกสาร Tesseract และ Tesseract-Project
การติดตั้งและช่องทางแจกจ่าย
การพึ่งพาและการคอมไพล์
- รันไทม์ดีเพนเดนซี ที่จำเป็น:
- scrot
- tesseract-ocr
- ข้อมูลภาษา Tesseract
- มีลิงก์ไปยังคลังแพ็กเกจของ Arch และ Debian
- บิลด์ไทม์ดีเพนเดนซี ที่จำเป็น:
- granite
- gtk+-3.0
- gobject-2.0
- gdk-pixbuf-2.0
- libhandy-1
- libportal-0.5
- หากต้องการคอมไพล์และรันเอง ให้โคลนรีโพซิทอรี สร้างไดเรกทอรีบิลด์ด้วย Meson ติดตั้งด้วย Ninja แล้วรัน
com.github.rajsolai.textsnatcher
สถานะการพัฒนาและที่มา
- โครงการมีป้ายระบุว่าสร้างด้วย Vala
- ใน README ระบุว่าขณะนี้กำลังระดมทุนเพื่อซื้อ Linux PC และโครงการจะกลับมาพร้อมอัปเดตและการแก้ไขในเดือนหน้า
- รายการที่ใช้เป็นแรงบันดาลใจคือ README ของ Planner, โครงสร้างแอปพลิเคชันของ Develop และแอป macOS ชื่อ TextSniper
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ใช้สคริปต์แบบเดียวกับ Dibby053 โดยนำมาจาก Stack Overflow แล้วแก้นิดหน่อยให้ทำงานได้บน KDE/GNOME, Wayland/X11 และให้แสดงสถานะปัจจุบันเป็นการแจ้งเตือน
การแยกแยะ X11/Wayland ยังไม่ได้ทดสอบเอง แต่ถ้าลองใช้แล้วแจ้งผลกลับมาก็ยินดี
spectacleใน โหมดเบื้องหลัง เพื่อไม่ให้หน้าต่างเด้งขึ้นมาหลังถ่ายสกรีนช็อตเป็นวิธีต่อ
grim,slurp,mogrify,tesseract,wl-copyเข้าด้วยกัน และใช้fuzzelเลือกภาษา OCRเลือกภาษาด้วย
dmenuแล้วประมวลผลประมาณmaim -us | tesseract --dpi 145 -l eng+${lang} - - | xsel -bihttps://news.ycombinator.com/item?id=33704483#33705272
trap "cleanup '$SCR_IMG'" EXITแต่ในกรณีนี้ก็ไม่ใช่คำเตือนที่ผิดไปเสียทีเดียวคำสั่งที่ส่งให้
trapโดยทั่วไปจะถูกประเมินผล จึงเกิดการขยายตัวแปร และtrap 'cleanup "$SCR_IMG"' EXITจะทำงานได้ปลอดภัยกว่าถ้าเป็น Bash รุ่นใหม่
trap "cleanup ${SCR_IMG@Q}" EXITก็เป็นอีกทางเลือกหนึ่งbash -c 'flameshot gui -s -r | tesseract - - | gxmessage -title "Decoded Data" -fn "Consolas 12" -wrap -geometry 640x480 -file -'กด Super+O แล้วลากเลือกพื้นที่ที่จะทำ OCR ข้อความที่จับได้จะเด้งขึ้นมาเป็นกล่องโต้ตอบทันที
สคริปต์ที่เคยคัดลอกมาจากที่ไหนสักแห่งเมื่อนานมาแล้วทำงานนี้ได้ค่อนข้างดี
วิธีคือจับภาพพื้นที่ด้วย
scrotแล้วใช้mogrifyทำพรีโปรเซสเป็นขาวดำและขยายภาพ จากนั้นดึงข้อความด้วยtesseractใส่คลิปบอร์ดด้วยxselและแสดงการแจ้งเตือนด้วยscrotเพราะตัวเลือก
--nodragทำให้เวลาเลือกพื้นที่ด้วยแทร็กแพด แค่คลิกหนึ่งครั้ง ย้ายเคอร์เซอร์ แล้วคลิกอีกครั้งก็พอ สะดวกกว่าใน
maim -s --nodrag --quality=10 $IMG.pngค่า10เทียบเท่ากับ100ของscrotการพรีโปรเซสด้วยการขยายภาพก็ไม่ได้รู้สึกว่าต่างมาก และไม่แน่ใจว่าพรีโปรเซสแบบไหนจะทำให้ดีขึ้น
เลยสงสัยว่า TextSnatcher ปรับปรุงอะไรจากนี้หรือเปล่า แต่หน้า GitHub ก็ไม่ค่อยชัดเจน
ขอโทษเพื่อนร่วมงานที่ใช้ชีวิตอยู่ระหว่าง Unix กับ Windows ด้วย
trap "rm $IMG*" EXITควรดู https://www.shellcheck.net/wiki/SC2064ใช้
mktemp -dแล้วลบไดเรกทอรีแบบ recursive น่าจะดีกว่าผูกสคริปต์กับคีย์ลัด ดีกว่าต้องกดหน้าต่างที่มีปุ่มมาก
สำหรับเพื่อนร่วมงานสามัญชนที่ใช้ Windows ฟีเจอร์เสริมอย่างเป็นทางการของ Microsoft PowerToys ก็มีความสามารถนี้
เครื่องมือสกรีนช็อตพื้นฐานก็มีแล้วเช่นกัน แต่โดยส่วนตัวคีย์ลัดเดียวของ PowerToys ใช้ง่ายกว่า
https://github.com/microsoft/PowerToys
กด WIN+SHIFT+S ได้เลย และถ้าไม่มีไอคอน “Text actions” ให้อัปเดตเป็นเวอร์ชันล่าสุดจาก Windows Store
สงสัยมานานแล้วว่า Tesseract เป็นโซลูชันระดับล้ำหน้าที่สุดของสายนี้จริงหรือไม่
จากที่รู้สึก มันดูยังขาดอยู่มาก และราวปี 2019 ผมรู้สึกว่าถ้าคิดถึงความก้าวหน้าของ computer vision แล้ว การรู้จำข้อความน่าจะเป็นปัญหาที่แทบจะถูกแก้ได้แล้ว
มันควรจะทำได้ดีกว่ามนุษย์ด้วยซ้ำ แต่แม้แต่สแกนใบเสร็จความละเอียดต่ำก็ยังแปลงได้ไม่แม่น โดยเฉพาะถ้าไม่ใช่ภาษาอังกฤษ
อาจเป็นเพราะผมใช้ไม่ถูกวิธีก็ได้
เลยอยากรู้ว่าใช้งานด้วยวิธีไหนกันแน่
เห็น Tesseract ถูกพูดถึงบ่อยขึ้นเรื่อย ๆ
ตอนลองใช้กับบทความวิทยาศาสตร์ที่สแกนไว้เมื่อ 10–15 ปีก่อน ผลลัพธ์น่าผิดหวัง และการแก้หลังจากนั้นด้วยมือก็ไม่ได้ลดงานไปมากเมื่อเทียบกับพิมพ์เอง
ดังนั้นสำหรับผม Tesseract จึงกลายเป็นคำพ้องความหมายของ “ไม่คุ้มที่จะลอง” แต่เวลาผ่านไปมันอาจดีขึ้นแล้ว ก็น่าลองใช้อีกครั้ง
สำหรับการรู้จำทั่วไปที่รวมถึงฟอนต์แปลก ๆ หรือคุณภาพภาพแย่ ๆ EasyOCR ให้ผลลัพธ์ดีกว่ามาก
ภายในใช้ Tesseract และทำได้ยอดเยี่ยมจริง ๆ
เมื่อ 15 ปีก่อน ถ้าจะได้ผลลัพธ์ที่แย่น้อยลงก็ต้องพรีโปรเซสพอสมควร แต่ตอนนี้ได้ผลลัพธ์ดีแม้ไม่พรีโปรเซส
ลองใช้เองแล้ว ทำงานได้ค่อนข้างดี
เนื่องจากเป็น แอป Flatpak จึงต้องใช้เดสก์ท็อปพอร์ทัลเพื่อให้ทำงานได้ครบถ้วน แต่กับการตั้งค่า
xdg-desktop-portal-wlrเดิมก็ใช้ได้ดีโดยไม่ต้องตั้งค่าเพิ่มเติมถ้าเป็นสภาพแวดล้อม X11 หรือ Wayland ที่มีการตั้งค่า
xdg-desktop-portalซึ่งรองรับ Screenshot API ก็น่าจะทำงานได้ไม่ยากผลลัพธ์ไม่สม่ำเสมอแต่ก็ไม่แย่ และข้อความที่อ่านได้ชัดเจนมักมีแค่ปัญหาเรื่องช่องว่างหรือข้อผิดพลาดเป็นครั้งคราว จึงอาจมีประโยชน์เวลาต้องคัดลอกข้อความจากกล่องโต้ตอบข้อผิดพลาด
อย่างไรก็ตาม บน Linux ข้อความในกล่องโต้ตอบข้อผิดพลาดมักเลือกได้อยู่แล้วในหลายกรณี และ MessageBox มาตรฐานของ Windows ก็รองรับ Ctrl+C
ใช้ Frog ซึ่งเป็นแอปคล้ายกันอยู่ และใช้งานได้สำเร็จดีมาก
https://getfrog.app
.debและไม่มี brewบน macOS มียูทิลิตีที่ทำได้มากกว่าการเปิดเอกสารใน Preview แล้วลองเลือกข้อความ
https://github.com/schappim/macOCR
ชอบผู้เขียนคนนี้
จากนั้นลบภาพได้ด้วยไอคอนถังขยะมุมขวาบน และ Cmd-A ก็ใช้งานได้
ตัวอย่างที่ลองใช้กับคอมเมนต์นี้อยู่ที่นี่: https://imgur.com/a/q0NvcS6
บน iOS ทำวิธีแก้คล้าย ๆ กันด้วย Shortcut ที่ผูกกับ Action Button
บางแอปคัดลอกข้อความได้ไม่ง่าย หรือเป็นภาษาต่างประเทศ จึงถ่ายสกรีนช็อตแล้วดึงข้อความออกมา จากนั้นตรวจจับภาษาต้นฉบับอัตโนมัติและแปลเป็นอังกฤษ พร้อมแสดงทั้งต้นฉบับและคำแปลใน Quick View เพื่อให้เลือกและคัดลอกได้
ลองทดสอบตัวอย่างการใช้งานได้ที่นี่: https://www.icloud.com/shortcuts/f420d24e4960415da1a43f230abfce39
อนึ่ง ใน iOS รุ่นล่าสุด สามารถเปิดรูปในแอปรูปภาพ แล้วใช้นิ้วเลือกข้อความในรูปเพื่อคัดลอกได้ด้วย
ลองใช้จากปุ่มแชร์บนรูปภาพ แล้วเลือกใน Share Sheet ก็ใช้งานได้ แต่ถ้าอยู่ในสถานการณ์ที่ส่งรูปภาพเข้าไปอยู่แล้ว ขั้นตอนถ่ายสกรีนช็อตก็ซ้ำซ้อน
แม้จะบอกว่า “สำหรับ Linux Desktop” แต่นี่คือ Flatpak และไม่ใช่ทุกดิสโทร Linux ที่ให้ Flatpak มาเป็นค่าเริ่มต้น
ตั้งใจจะลองรันบน VM ของ Fedora สักครั้ง และเครื่องมือแบบนี้เห็นมามากแล้ว ส่วนใหญ่ใช้ Tesseract
ถ้าเป็นภาพหยาบหรือมีนอยส์มาก ตัวอักษรบิดหรือเอียง ก็ล้มเหลวหนัก และแก้ CAPTCHA ให้ไม่ได้
https://tesseract-ocr.github.io/tessdoc/Home.html
พูดให้ตรงคือ ผู้เขียนไม่ได้ทำแพ็กเกจสำหรับดิสโทรของคุณ และก็ยังไม่มีใครสละเวลาและแรงจูงใจมาทำแพ็กเกจให้
ผู้ดูแลแพ็กเกจที่กำลังตามหาอาจเป็นคุณก็ได้
ถ้ามีแค่
.debถึงจะพูดได้ว่าใช้นอก Ubuntu/Debian ไม่ได้ และนั่นเป็นข้อเสียที่ใหญ่กว่ามาก