5 पॉइंट द्वारा GN⁺ 2024-01-04 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
GN⁺ 2024-01-04
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 नहीं कहता, लेकिन पर्याप्त समय हो तो आम तौर पर समस्याएँ हल कर लेता हूँ; बस इसमें काफी समय लगा

    • अगर यह Tesseract से बेहतर है, तो वाकई प्रभावशाली है। सोच रहा हूँ कि क्या कई macOS machines चलाकर इसे API service बनाया जा सकता है और इससे पैसे कमाए जा सकते हैं, और क्या यह कानूनी रूप से संभव है
    • सिर्फ Tesseract इस्तेमाल करना अब काफी व्यापक रूप से बस ठीक-ठाक स्तर माना जाता है
      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 हो जाता है
    • जानना चाहता हूँ कि Apple Vision Framework से PDF या image से table structure extract करने का कोई tutorial है क्या। लेख में दिए गए दोनों links आज़माए, लेकिन उन्होंने table structure बनाए नहीं रखा, सिर्फ text निकाला
      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...

    • मैं AutoHotkey और PowerToys साथ में इस्तेमाल करके screenshot data को CSV में जोड़ रहा हूँ, और अपनी key mappings के साथ यह अच्छी तरह काम करता है
  • मैंने एक open source tool बनाया है जो CLI और ठीक-ठाक UI दोनों देता है, और यह free है
    https://trex.ameba.co

    • मैं Trex रोज़ इस्तेमाल करता हूँ। handwriting और खराब screen captures को भी अच्छी तरह handle करता है, इसलिए प्रभावशाली है
  • पता चला कि Safari, Preview, Notes समेत कई Mac apps images पर OCR अपने-आप करती हैं। image के अंदर के text को आसानी से select करके कहीं और copy-paste किया जा सकता है, जो काफी अच्छा है

    • quality कुछ हद तक अविश्वसनीय रूप से अच्छी है। YouTube video चलते समय भी video के अंदर का text select कर सकते हैं, और जरूरत हो तो pause भी कर सकते हैं
      अगर URL या domain text, या QR code हो, तो poster photo या video के अंदर भी long press या long click करके image से सीधे link खोल सकते हैं
    • Photos app में भी यही है। conference में या जब किसी लंबे string को digital बनाना हो, तब यह सच में बहुत काम आता है। जैसे default router password
      photo से select करके copy करें, फिर Handoff feature के जरिए phone या Mac पर paste कर सकते हैं
  • MacBook पर brew से install करके इस्तेमाल किए जाने वाले एक छोटे OCR tool को मैं बहुत पसंद करता हूँ: https://github.com/schappim/macOCR

    • मैं भी। मेरे use case के लिए उस utility को macOS Shortcut में wrap करके menu bar से click करने या Quicksilver से चलाने लायक बना देना काफी है
  • 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 हो सकता है, लेकिन एक विकल्प है

    • संदर्भ के लिए, यह पुराने और कम सटीक API VNRecognizeTextRequest का उपयोग कर रहा है
      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

    • macOS Shortcuts में OCR text को file में output करवाना भी संभव है। action के लिए “Append to Text File” इस्तेमाल करें
  • सोच रहा हूँ कि Apple Vision के Copy Subject feature में भी ऐसी ही कोई technique है क्या। मैं इस feature पर काफी निर्भर हो गया हूँ, लेकिन access करने का तरीका बहुत limited लगता है

    • इसे देखना पड़ा; शायद mobile Photos में photo के अंदर किसी item को “extract” करके sticker बनाने वाली feature की बात है। लगता है Apple इसे “lifting subjects” कहता है https://support.apple.com/guide/iphone/lift-a-subject-from-t... https://developer.apple.com/videos/play/wwdc2023/10176/
      “Extract text” action को “Remove background” से बदलकर देखना चाहिए। shortcut चलाते समय “-o” से output image filename specify कर दें
      shortcuts run remove-background -i ~/Downloads/portrait-beard.avif -o beard.jpg