- macOS के Shortcuts ऐप का उपयोग करके बिना किसी अलग paid service के local OCR shortcut बनाया जा सकता है, और terminal/CLI/Python से image text extraction चलाया जा सकता है
- मुख्य सेटअप यह है कि Extract Text from Image action को Shortcut Input से जोड़ा जाए और result को clipboard में copy किया जाए
- shortcut का नाम
ocr-text या extract-text जैसे बिना spaces वाले lowercase में रखना बेहतर है, ताकि CLI से call करना आसान हो; नाम लिखने के बाद save करने के लिए Enter दबाना ज़रूरी है
- terminal में
shortcuts run ocr-text -i से इसे चलाया जा सकता है, और extracted result clipboard में copy हो जाता है जिसे Command-V से देखा जा सकता है
- Python में
subprocess.check_output() के जरिए वही shortcuts run command call करके OCR shortcut को दोबारा इस्तेमाल किया जा सकता है
Shortcuts में OCR shortcut बनाना
- macOS का Shortcuts ऐप खोलें और
+ button से नया shortcut बनाएं
- दाईं sidebar में
extract text खोजें, फिर Extract Text from Image action को बाईं workspace में drag करें
Extract text from ... action के नीले Image input पर क्लिक करें और Shortcut Input चुनें
- ऊपर Receive action दिखाई देगा, उसे वैसे ही रहने दें
- दाईं sidebar में
copy खोजें और Copy to Clipboard action को Extract Text from Image के नीचे रखें
- यह सुनिश्चित करें कि आख़िरी action में
Copy के बाद Text from Image ही दिख रहा हो
Copy to Clipboard action को नीचे drag करने की प्रक्रिया थोड़ी असुविधाजनक हो सकती है
- shortcut का नाम
extract-text या ocr-text जैसा सरल, lowercase और बिना spaces वाला रखना उपयुक्त है
- नाम लिखने के बाद Enter दबाना होगा, तभी नाम save होगा
CLI और Python में चलाना
- terminal में shortcut चलाने की command इस प्रकार है
shortcuts run ocr-text -i
- चलाने के बाद अगर Command-V से paste करने पर extracted text दिखे, तो इसका मतलब setup सही है
- Python में
subprocess.check_output() से वही command चलाई जा सकती है
import subprocess
file_path = '... some file path ...'
ocr_out = subprocess.check_output(
f'shortcuts run ocr-text -i "{file_path}"', shell=True
)
print(ocr_out)
- Shortcuts sharing कभी-कभी अजीब तरह से काम कर सकती है, इसलिए manual setup की ज़रूरत पड़ सकती है; ज़्यादातर प्रक्रिया सिर्फ़ एक बार करनी होती है
1 टिप्पणियां
Hacker News की राय
OP की पोस्ट अच्छी लगी। Apple का Vision framework काफी प्रभावशाली लगा, और मैंने इसे एक पर्सनल प्रोजेक्ट में इस्तेमाल किया जिसमें स्प्रेडशीट स्क्रीनशॉट्स की लाखों इमेज को OCR से पढ़कर PostgreSQL database में डालना था
macOS और Nvidia अभी भी अच्छी तरह साथ नहीं चलते, इसलिए Tesseract जैसे CPU-based OCR भी आज़माए, लेकिन नतीजे बहुत बार गलत निकले। Vision framework में मैंने जितने भी देखे, उनमें output quality सबसे अच्छी थी, और computation भी सबसे कम लगा
यह काफी अस्थिर जरूर था, लेकिन संभव है कि वह मेरी implementation की गलती रही हो। वास्तविक implementation के लिए मैंने RHetTbull का vision.py https://gist.github.com/RhetTbull/1c34fc07c95733642cffcd1ac5... इस्तेमाल किया, और प्रयोगों के लिए ocrmac https://github.com/straussmaximilian/ocrmac भी साथ में इस्तेमाल किया; i7 6700k Hackintosh पर भी performance उम्मीद से अच्छी रही
मैं खुद को programmer नहीं कहता, लेकिन पर्याप्त समय हो तो आम तौर पर समस्याएँ हल कर लेता हूँ; बस इसमें काफी समय लगा
RAG frameworks को ही देखें तो अक्सर वे कई implementations इस्तेमाल या support करते हैं, और Tesseract लगभग हमेशा support होता है, लेकिन आम तौर पर ideal choice नहीं होता। Unstructured https://github.com/Unstructured-IO/unstructured-inference या DocTR https://github.com/mindee/doctr जैसे projects ज्यादा पसंद किए जाते हैं
ये आम तौर पर state-of-the-art vision models https://github.com/mindee/doctr#models-architectures https://github.com/Unstructured-IO/unstructured-inference#mo... का उपयोग करके Tesseract से कहीं बेहतर प्रदर्शन करते हैं
Apple Vision framework से सीधी तुलना नहीं की है, लेकिन Tesseract से तो निश्चित रूप से बेहतर हैं, और संभवतः Apple Vision से भी बेहतर हो सकते हैं। कई तरीकों को मिलाने वाला approach भी है, लेकिन वह काफी complex हो जाता है
AWS Textract table को CSV में extract करने के लिए Python sample code देता है, और वह अच्छी तरह काम करता है
Windows पर कुछ ऐसा ही करने की कोशिश करते हुए पता चला कि पहले से install किए हुए Microsoft project PowerToys में काफी अच्छा OCR tool शामिल है
Win+Shift+T दबाएँ और scan करने वाला area चुनें, तो text clipboard में copy हो जाता है
https://learn.microsoft.com/en-us/windows/powertoys/
https://learn.microsoft.com/en-us/windows/powertoys/text-ext...
मैंने एक open source tool बनाया है जो CLI और ठीक-ठाक UI दोनों देता है, और यह free है
https://trex.ameba.co
पता चला कि Safari, Preview, Notes समेत कई Mac apps images पर OCR अपने-आप करती हैं। image के अंदर के text को आसानी से select करके कहीं और copy-paste किया जा सकता है, जो काफी अच्छा है
अगर URL या domain text, या QR code हो, तो poster photo या video के अंदर भी long press या long click करके image से सीधे link खोल सकते हैं
photo से select करके copy करें, फिर Handoff feature के जरिए phone या Mac पर paste कर सकते हैं
MacBook पर brew से install करके इस्तेमाल किए जाने वाले एक छोटे OCR tool को मैं बहुत पसंद करता हूँ: https://github.com/schappim/macOCR
Windows पर PowerToys का Text Extractor recommend करूँगा
https://learn.microsoft.com/en-us/windows/powertoys/text-ext...
मेरा समाधान भी जोड़ूँ तो यह है: https://skaplanofficial.github.io/PyXA/tutorial/images.html#...
PyXA, Vision framework का उपयोग करके एक या अधिक images से text extract करता है। यह package का छोटा हिस्सा है, इसलिए one-off काम के लिए थोड़ा overkill हो सकता है, लेकिन एक विकल्प है
ImageAnalyzer ज्यादा नया और काफी बेहतर है। OP का shortcut भी internally पुराने API का उपयोग कर रहा होने की संभावना ज्यादा लगती है
macOS Ventura और बाद के versions में Image Capture UI में default OCR feature सच में integrated है
AirPrint-compatible scanner से PDF scan करते समय right panel में “OCR” checkbox दिखाई देता है
file में content डालना हो तो ऐसा कर सकते हैं। यह सबसे efficient है, ऐसा नहीं कह रहा, लेकिन काम करता है
OCRTHISFILE="ocr-test.jpg"
shortcuts run ocr-text -i "${OCRTHISFILE}"
pbpaste > ${OCRTHISFILE}.txt
या output देखते हुए file में भी डालना हो तो:
OCRTHISFILE="ocr-test.jpg"
shortcuts run ocr-text -i "${OCRTHISFILE}"
pbpaste | tee ${OCRTHISFILE}.txt
सोच रहा हूँ कि Apple Vision के Copy Subject feature में भी ऐसी ही कोई technique है क्या। मैं इस feature पर काफी निर्भर हो गया हूँ, लेकिन access करने का तरीका बहुत limited लगता है
“Extract text” action को “Remove background” से बदलकर देखना चाहिए। shortcut चलाते समय “-o” से output image filename specify कर दें
shortcuts run remove-background -i ~/Downloads/portrait-beard.avif -o beard.jpg