5 poin oleh GN⁺ 2024-01-04 | 1 komentar | Bagikan ke WhatsApp
  • Dengan aplikasi Shortcuts di macOS, Anda bisa membuat shortcut OCR lokal tanpa layanan berbayar tambahan dan menjalankan ekstraksi teks dari gambar melalui terminal/CLI/Python
  • Susunan intinya adalah menghubungkan Shortcut Input ke aksi Extract Text from Image, lalu menyalin hasilnya ke clipboard
  • Nama shortcut sebaiknya huruf kecil tanpa spasi seperti ocr-text atau extract-text agar mudah dipanggil dari CLI, dan setelah memasukkan nama harus menekan Enter untuk menyimpannya
  • Di terminal, jalankan dengan shortcuts run ocr-text -i , lalu hasil ekstraksi akan disalin ke clipboard dan bisa dicek dengan Command-V
  • Di Python, shortcut OCR yang sama bisa dipakai ulang dengan memanggil perintah shortcuts run yang sama melalui subprocess.check_output()

Membuat shortcut OCR di Shortcuts

  • Buka aplikasi Shortcuts di macOS dan buat shortcut baru dengan tombol +
  • Di sidebar kanan, cari extract text, lalu seret aksi Extract Text from Image ke area kerja di sebelah kiri
  • Klik input Image berwarna biru pada aksi Extract text from ... lalu pilih Shortcut Input
    • Aksi Receive akan muncul di bagian atas, dan bisa dibiarkan seperti itu
  • Di sidebar kanan, cari copy lalu tempatkan aksi Copy to Clipboard di bawah Extract Text from Image
    • Pada aksi terakhir, pastikan bagian setelah Copy adalah Text from Image
    • Proses menyeret aksi Copy to Clipboard ke bawah mungkin agak merepotkan
  • Nama shortcut yang cocok adalah huruf kecil sederhana tanpa spasi seperti extract-text atau ocr-text
    • Setelah memasukkan nama, Anda harus menekan Enter agar nama tersimpan

Menjalankannya dari CLI dan Python

  • Perintah untuk menjalankan shortcut dari terminal adalah sebagai berikut
shortcuts run ocr-text -i
  • Jika setelah dijalankan teks hasil ekstraksi terlihat saat ditempel dengan Command-V, berarti pengaturannya sudah benar
  • Di Python, perintah yang sama bisa dijalankan dengan subprocess.check_output()
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)
  • Berbagi Shortcuts kadang bisa berfungsi aneh sehingga perlu pengaturan manual, tetapi sebagian besar proses ini hanya perlu dilakukan sekali

1 komentar

 
GN⁺ 2024-01-04
Komentar Hacker News
  • Postingan OP bagus. Vision framework dari Apple cukup mengesankan, dan saya pernah memakainya untuk proyek pribadi yang membaca puluhan ribu tangkapan layar spreadsheet dengan OCR lalu memasukkannya ke database PostgreSQL
    Karena macOS dan Nvidia masih belum terlalu cocok, saya juga mencoba OCR berbasis CPU seperti Tesseract, tetapi hasilnya terlalu sering salah. Vision framework menghasilkan kualitas output terbaik yang pernah saya lihat, dan memakai komputasi paling sedikit
    Memang cukup tidak stabil, meski mungkin itu karena kesalahan implementasi saya sendiri. Untuk implementasi sebenarnya saya memakai vision.py milik RHetTbull https://gist.github.com/RhetTbull/1c34fc07c95733642cffcd1ac5..., untuk eksperimen saya juga memakai ocrmac https://github.com/straussmaximilian/ocrmac, dan performanya ternyata bagus bahkan di Hackintosh i7 6700k
    Saya tidak menyebut diri saya programmer, tetapi kalau diberi cukup waktu biasanya saya bisa menyelesaikan masalah; hanya saja waktunya memang cukup banyak

    • Kalau lebih baik daripada Tesseract, itu benar-benar mengesankan. Saya penasaran apakah bisa menjalankan beberapa mesin macOS untuk menjadikannya layanan API dan menghasilkan uang, serta apakah itu memungkinkan secara hukum
    • Penggunaan Tesseract saja sekarang sudah cukup luas dikenal sebagai sekadar lumayan
      Lihat saja framework RAG, banyak yang memakai atau mendukung beberapa implementasi; Tesseract hampir selalu didukung, tetapi biasanya bukan pilihan ideal. Proyek seperti Unstructured https://github.com/Unstructured-IO/unstructured-inference atau DocTR https://github.com/mindee/doctr lebih disukai
      Mereka umumnya memanfaatkan model vision yang modern https://github.com/mindee/doctr#models-architectures https://github.com/Unstructured-IO/unstructured-inference#mo... dan jauh mengungguli Tesseract
      Saya belum membandingkannya langsung dengan Apple Vision framework, tetapi jelas lebih baik daripada Tesseract, dan berpotensi juga lebih baik daripada Apple Vision. Ada juga pendekatan menggabungkan beberapa metode, tetapi itu jadi cukup kompleks
    • Saya penasaran apakah ada tutorial untuk mengekstrak struktur tabel dari PDF atau gambar dengan Apple Vision Framework. Saya sudah mencoba dua tautan di artikel, tetapi keduanya hanya mengekstrak teks tanpa mempertahankan struktur tabel
      AWS Textract menyediakan contoh kode Python untuk mengekstrak tabel menjadi CSV, dan itu berfungsi dengan baik
  • Saat mencoba hal serupa di Windows, saya baru tahu bahwa PowerToys, proyek Microsoft yang sudah saya instal, menyertakan alat OCR yang cukup bagus
    Tekan Win+Shift+T lalu pilih area yang ingin dipindai, maka teks akan disalin ke clipboard
    https://learn.microsoft.com/en-us/windows/powertoys/
    https://learn.microsoft.com/en-us/windows/powertoys/text-ext...

    • Saya memakai AutoHotkey bersama PowerToys untuk menambahkan data tangkapan layar ke CSV, dan dengan pemetaan tombol buatan sendiri itu berjalan baik
  • Saya membuat alat open source yang menyediakan CLI dan UI yang cukup bagus, dan gratis
    https://trex.ameba.co

    • Saya memakai Trex setiap hari. Mengagumkan karena bisa menangani tulisan tangan dan tangkapan layar yang berantakan dengan baik
  • Saya baru tahu bahwa banyak aplikasi Mac, termasuk Safari, Preview, dan Notes, menjalankan OCR secara otomatis pada gambar. Teks di dalam gambar bisa dipilih dengan mudah lalu disalin dan ditempel ke tempat lain, dan itu cukup bagus

    • Kualitasnya nyaris tidak masuk akal bagusnya. Bahkan saat video YouTube sedang diputar, Anda bisa memilih teks di dalam video; kalau perlu bisa dijeda
      Jika itu teks URL atau domain, atau kode QR, Anda bisa menekan lama atau mengklik lama pada foto poster atau di dalam video untuk langsung membuka tautan dari gambar
    • Aplikasi Photos juga sama. Ini sangat berguna di konferensi atau saat perlu mendigitalkan string yang panjang, misalnya kata sandi default router
      Anda bisa memilih dan menyalinnya dari foto, lalu menempelkannya ke ponsel atau Mac melalui fitur Handoff
  • Saya sangat suka alat OCR kecil yang saya instal dengan brew di MacBook: https://github.com/schappim/macOCR

    • Saya juga. Untuk kebutuhan saya, cukup membungkus utilitas itu sebagai macOS Shortcut agar bisa diklik dari menu bar atau dijalankan lewat Quicksilver
  • Di Windows, saya merekomendasikan Text Extractor dari PowerToys
    https://learn.microsoft.com/en-us/windows/powertoys/text-ext...

  • Kalau saya menambahkan satu solusi saya, ini dia: https://skaplanofficial.github.io/PyXA/tutorial/images.html#...
    PyXA menggunakan framework Vision untuk mengekstrak teks dari satu atau beberapa gambar. Karena ini hanya bagian kecil dari paketnya, mungkin berlebihan untuk pekerjaan sekali pakai, tetapi bisa menjadi pilihan

    • Sebagai catatan, ini memakai API yang lebih lama dan akurasinya lebih rendah, yaitu VNRecognizeTextRequest
      ImageAnalyzer lebih baru dan jauh lebih bagus. Shortcut milik OP juga tampaknya besar kemungkinan memakai API lama itu secara internal
  • Pada macOS Ventura dan versi setelahnya, fitur OCR bawaan sebenarnya sudah terintegrasi ke UI Image Capture
    Saat memindai PDF dengan scanner yang kompatibel dengan AirPrint, checkbox “OCR” muncul di panel kanan

  • Kalau ingin memasukkan isinya ke file, bisa seperti ini. Bukan bermaksud bilang ini yang paling efisien, tapi ini berfungsi
    OCRTHISFILE="ocr-test.jpg"
    shortcuts run ocr-text -i "${OCRTHISFILE}"
    pbpaste > ${OCRTHISFILE}.txt
    Atau kalau ingin melihat output sambil juga memasukkannya ke file:
    OCRTHISFILE="ocr-test.jpg"
    shortcuts run ocr-text -i "${OCRTHISFILE}"
    pbpaste | tee ${OCRTHISFILE}.txt

    • Di macOS Shortcuts, Anda juga bisa membuat teks OCR dikeluarkan ke file. Untuk aksinya, gunakan “Append to Text File
  • Saya penasaran apakah ada teknik serupa untuk fitur Copy Subject di Apple Vision. Saya jadi cukup bergantung pada fitur ini, tetapi cara mengaksesnya terasa terlalu terbatas