Jump to content

OCR: extract text from snapshot


Recommended Posts

Hi there,

 

Just sharing my first workflow. Some OCR workflow already exist but are relying on some obscur chinese API with exposed personal credentials... This one use your system own installation of `tesseract`. Just take a snapshot and paste the text. The script usually takes no more than a few seconds.

 

https://github.com/nicooprat/alfred-ocr

 

alfred-ocr.png

 

PR welcome.

Hope it helps!

Edited by nicooprat
Link to comment
  • 4 weeks later...

I recently added the `lang` parameter with `-l` flag:

tesseract /tmp/ocr_snapshot.png stdout -l {query} 2>&1

It should allow you to run the command with `OCR fra` for french for example, but it should still work without any parameter. Tried just now and it works (Mac High Sierra & tesseract 3.05.01).

 

Possible solutions:

 

* add a way in the bash script to remove `-l` flag if `{query}` is undefined (don't know how to do this)

* downgrade to tesseract 3 as it seems to behave differently in 4

* remove this part in the bash script if you don't need it (see screenshot attached)

 

Hope it helps.

 

 

Capture d’écran 2018-12-06 à 11.27.55.png

Link to comment
  • 2 weeks later...
1 hour ago, ReinaSuo said:

我尝试了解决方案No.3。感谢分享。顺便说一句我想知道在剪贴板中是否有“警告”是正常的。 

1107155509_ScreenShot2018-12-15at22_42_31.png.2d38b068bed050f815e6d8b9bbdd0696.png

 

现在识别英语对我来说非常有用。我怎样才能用中文做这个工作?

 

 

I tried `brew install tesseract --with-all-languages`  again.😭

Here is what I got:

Error: An exception occurred within a child process:

  Errno::ENOENT: No such file or directory @ rb_sysopen - 

 

Edited by ReinaSuo
Link to comment
On 12/15/2018 at 3:43 PM, ReinaSuo said:

I tried the solution No.3. Thanks for sharing. btw I am wondering if it is normal to have "warning" in clipboard. 

1107155509_ScreenShot2018-12-15at22_42_31.png.2d38b068bed050f815e6d8b9bbdd0696.png

 

It's very useful for me while recognizing English now. How can I make this  work with Chinese?

 

 

The warning is certainly because you're taking the screenshot on a different monitor than your main one. Can't find anything in Tesseract to avoid this... Simplest workaround is to drag your app window to your main monitor and take the screenshot from there. Results should be much better!

 

By default, Tesseract try to guess language from results, so I guess it should work as is. In the last version of my Alfred script (see https://github.com/nicooprat/alfred-ocr/blob/master/README.md#usage), you can type "OCR [lang]" where "[lang]" is in this list: https://github.com/tesseract-ocr/tesseract/blob/b67ea2c1a70c56053e142a5fb7cc18fb29cdc4b8/src/training/language-specific.sh#L21

 

On 12/15/2018 at 5:11 PM, ReinaSuo said:

I tried `brew install tesseract --with-all-languages`  again.😭

Here is what I got:


Error: An exception occurred within a child process:

  Errno::ENOENT: No such file or directory @ rb_sysopen - 

 

 

I can't help with this one, you should seek help on the Tesseract project: https://github.com/tesseract-ocr/tesseract/issues

Link to comment
  • 2 weeks later...
On 2018/12/17 at PM7点49分, nicooprat said:

警告当然是因为您在不同的显示器上拍摄屏幕截图而不是主显示屏。在Tesseract中找不到任何东西以避免这种情况...最简单的解决方法是将您的应用程序窗口拖动到主显示器并从那里截取屏幕截图。结果应该好多了!

 

默认情况下,Tesseract尝试从结果中猜测语言,所以我猜它应该按原样运行。在我的Alfred脚本的最新版本中(参见https://github.com/nicooprat/alfred-ocr/blob/master/README.md#usage),您可以输入“OCR [lang]”,其中“[lang]”在此列表中:https:  //github.com/tesseract-ocr/tesseract/blob/b67ea2c1a70c56053e142a5fb7cc18fb29cdc4b8/src/training/language-specific.sh#L21

 

 

我对这个问题无能为力,你应该在Tesseract项目上寻求帮助:https:  //github.com/tesseract-ocr/tesseract/issues

Thank you very much.

Link to comment

Just a hint to fix the language issue; adding a check if a paramter was given helps in tesseract 4; remember that the language attributes are a little weird (eng for english, deu for german etc.) thanks a lot for the script 

export PATH=/usr/local/bin/:$PATH

screencapture -i /tmp/ocr_snapshot.png

if [{query} = ""]; then
	tesseract /tmp/ocr_snapshot.png stdout 2>&1
else
	tesseract /tmp/ocr_snapshot.png stdout -l {query} 2>&1
fi

 

Link to comment
On 12/27/2018 at 9:45 PM, dkgrieshammer said:

Just a hint to fix the language issue; adding a check if a paramter was given helps in tesseract 4; remember that the language attributes are a little weird (eng for english, deu for german etc.) thanks a lot for the script 


export PATH=/usr/local/bin/:$PATH

screencapture -i /tmp/ocr_snapshot.png

if [{query} = ""]; then
	tesseract /tmp/ocr_snapshot.png stdout 2>&1
else
	tesseract /tmp/ocr_snapshot.png stdout -l {query} 2>&1
fi

 

Thanks, merged your pull request but it looks like it just deleted the workflow file. Uploaded a new one with your code, works great!

 

On 12/27/2018 at 9:55 PM, deanishe said:

I don't know, but the full list of supported languages by Tesseract is here: https://github.com/tesseract-ocr/tesseract/blob/b67ea2c1a70c56053e142a5fb7cc18fb29cdc4b8/src/training/language-specific.sh#L21

Link to comment
  • 1 year later...

I get the strangest behavior on Catalina. I'd run the workflow and it'd give me no errors, but it'd also give an empty notification saying it was "done" but their wouldn't be anything in my clipboard. It turns out that the screenshot command sort of isn't working on Catalina. It'll run and take a screenshot, but whenever you take a screenshot of something on the computer, it'll actually take a screenshot of your desktop BEHIND the window you're trying to capture. 🤯 Does anyone even know where to begin debugging this? It seems like their is something wrong with the `screenshot` method itself, but isn't that a core library component?

Link to comment
  • 4 weeks later...
  • 3 weeks later...
  • 4 weeks later...
  • 5 months later...
  • 6 months later...
  • 1 year later...
  • 4 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...