- macOS Shortcuts uygulaması kullanılarak ek ücretli bir servis olmadan yerel bir OCR kısayolu oluşturulabilir ve terminal/CLI/Python üzerinden görüntülerden metin çıkarma işlemi çalıştırılabilir
- Temel yapı, Extract Text from Image eylemine Shortcut Input bağlanması ve sonucun panoya kopyalanması akışından oluşur
- Kısayol adı
ocr-text veya extract-text gibi boşluksuz küçük harflerle seçilirse CLI’dan çağırmak kolay olur; adı girdikten sonra kaydetmek için Enter tuşuna basmak gerekir
- Terminalde
shortcuts run ocr-text -i ile çalıştırılır ve çıkarılan sonuç panoya kopyalanır; Command-V ile kontrol edilebilir
- Python’da
subprocess.check_output() ile aynı shortcuts run komutu çağrılarak OCR kısayolu yeniden kullanılabilir
Shortcuts’ta OCR kısayolu oluşturma
- macOS’taki Shortcuts uygulamasını açın ve
+ düğmesiyle yeni bir kısayol oluşturun
- Sağ kenar çubuğunda
extract text aratın, ardından Extract Text from Image eylemini soldaki çalışma alanına sürükleyin
Extract text from ... eylemindeki mavi Image girişine tıklayın ve Shortcut Input seçeneğini seçin
- Üst tarafta Receive eylemi görünür; olduğu gibi bırakabilirsiniz
- Sağ kenar çubuğunda
copy aratıp Copy to Clipboard eylemini Extract Text from Image eyleminin altına yerleştirin
- Son eylemde
Copy ifadesinden sonra gelen kısmın Text from Image olduğunu kontrol etmeniz gerekir
Copy to Clipboard eylemini aşağı sürüklemek biraz kullanışsız olabilir
- Kısayol adı olarak
extract-text veya ocr-text gibi basit, boşluksuz küçük harfli bir ad uygundur
- Adı yazdıktan sonra kaydolması için Enter tuşuna basmanız gerekir
CLI ve Python’da çalıştırma
- Terminalde kısayolu çalıştırma komutu şöyledir
shortcuts run ocr-text -i
- Çalıştırdıktan sonra Command-V ile yapıştırdığınızda çıkarılan metni görüyorsanız kurulum doğru yapılmış demektir
- Python’da aynı komut
subprocess.check_output() ile çalıştırılabilir
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 paylaşımı bazen garip davranabildiği için elle yapılandırma gerekebilir; ancak bu işlemlerin çoğunu yalnızca bir kez yapmak yeterlidir
1 yorum
Hacker News yorumları
OP'nin yazısı iyiydi. Apple'ın Vision framework'ü oldukça etkileyiciydi; on binlerce elektronik tablo ekran görüntüsünü OCR ile okuyup PostgreSQL veritabanına koyduğum kişisel bir projede kullandım
macOS ile Nvidia hâlâ pek iyi anlaşmadığı için Tesseract gibi CPU tabanlı OCR'ları da denedim ama sonuçlar fazlasıyla sık hatalıydı. Vision framework'ü gördüklerim içinde en iyi çıktı kalitesini verdi ve en az hesaplama kaynağını kullandı
Epey kararsızdı ama bu benim uygulama hatam da olabilir. Gerçek uygulamada RHetTbull'un vision.py'sini https://gist.github.com/RhetTbull/1c34fc07c95733642cffcd1ac5..., denemelerde de ocrmac'i https://github.com/straussmaximilian/ocrmac birlikte kullandım; i7 6700k Hackintosh'ta bile performans şaşırtıcı derecede iyiydi
Kendime programcı demem ama yeterince zaman olunca genelde sorunları çözebildim; bunun karşılığında epey zaman harcadım
Sadece RAG framework'lerine baksanız bile çoğu birden fazla uygulamayı kullanıyor ya da destekliyor; Tesseract neredeyse her zaman destekleniyor ama genelde ideal seçenek değil. Unstructured https://github.com/Unstructured-IO/unstructured-inference veya DocTR https://github.com/mindee/doctr gibi projeler daha çok tercih ediliyor
Bunlar genelde modern seviyedeki vision modellerinden https://github.com/mindee/doctr#models-architectures https://github.com/Unstructured-IO/unstructured-inference#mo... yararlanarak Tesseract'ı açık ara geride bırakıyor
Apple Vision framework'üyle doğrudan karşılaştırmadım ama Tesseract'tan kesinlikle daha iyi; potansiyel olarak Apple Vision'dan da iyi olabilir. Birden fazla yöntemi birleştiren yaklaşımlar da var ama işler epey karmaşıklaşıyor
AWS Textract, tabloları CSV olarak çıkarmak için Python örnek kodu sağlıyor ve o iyi çalışıyor
Windows'ta benzer bir şey yapmaya çalışırken, zaten kurulu olan Microsoft projesi PowerToys içinde oldukça iyi bir OCR aracı olduğunu fark ettim
Win+Shift+T'ye basıp taranacak alanı seçince metin panoya kopyalanıyor
https://learn.microsoft.com/en-us/windows/powertoys/
https://learn.microsoft.com/en-us/windows/powertoys/text-ext...
Hem CLI hem de düzgün bir UI sunan açık kaynaklı bir araç yaptım ve ücretsiz
https://trex.ameba.co
Safari, Preview, Notes dahil birçok Mac uygulamasının görseller üzerinde otomatik OCR yaptığını fark ettim. Görsel içindeki metni kolayca seçip başka yere kopyalayıp yapıştırabiliyorsunuz; oldukça iyi
URL veya alan adı metni ya da QR kod ise, bir poster fotoğrafında veya videonun içinde bile uzun basarak ya da uzun tıklayarak bağlantıyı doğrudan görselden açabiliyorsunuz
Fotoğraftan seçip kopyaladıktan sonra Handoff özelliğiyle telefona veya Mac'e yapıştırabiliyorsunuz
MacBook'umda brew ile kurup kullandığım küçük OCR aracını çok seviyorum: https://github.com/schappim/macOCR
Windows'ta PowerToys'un Text Extractor aracını öneririm
https://learn.microsoft.com/en-us/windows/powertoys/text-ext...
Benim çözümümü de ekleyeyim, şu: https://skaplanofficial.github.io/PyXA/tutorial/images.html#...
PyXA, Vision framework'ünü kullanarak bir veya daha fazla görüntüden metin çıkarıyor. Paketin küçük bir parçası olduğu için tek seferlik işler için fazla kaçabilir ama bir seçenek
ImageAnalyzer daha yeni ve çok daha iyi. OP'nin shortcut'ının da içeride eski API'yi kullanıyor olma ihtimali yüksek görünüyor
macOS Ventura ve sonraki sürümlerde Image Capture arayüzüne varsayılan OCR özelliği gerçekten entegre edilmiş durumda
AirPrint uyumlu bir tarayıcıyla PDF tararken sağ panelde “OCR” onay kutusu görünüyor
İçeriği bir dosyaya koymak için şöyle yapabilirsiniz. En verimlisi olduğunu söylemiyorum ama çalışıyor
OCRTHISFILE="ocr-test.jpg"
shortcuts run ocr-text -i "${OCRTHISFILE}"
pbpaste > ${OCRTHISFILE}.txt
Ya da çıktıyı görürken dosyaya da yazmak için:
OCRTHISFILE="ocr-test.jpg"
shortcuts run ocr-text -i "${OCRTHISFILE}"
pbpaste | tee ${OCRTHISFILE}.txt
Apple Vision'ın Copy Subject özelliğinde de benzer bir teknik olup olmadığını merak ediyorum. Bu özelliğe epey bağımlı hale geldim ama erişim yöntemi çok kısıtlayıcı geliyor
“Extract text” eylemini “Remove background” ile değiştirmeyi deneyebilirsiniz. Shortcut'ı çalıştırırken çıktı görüntü dosya adını “-o” ile belirtmeniz yeterli
shortcuts run remove-background -i ~/Downloads/portrait-beard.avif -o beard.jpg