কীভাবে তাত্ক্ষণিকভাবে ওসিআর সরঞ্জামগুলি ব্যবহার করে কোনও স্ক্রিন অঞ্চল থেকে পাঠ্য উত্তোলন করতে পারে?


27

উবুন্টু 12.10 এ, যদি আমি টাইপ করি

gnome-screenshot -a | tesseract output

এটি ফিরে আসে:

** Message: Unable to use GNOME Shell's builtin screenshot interface, resorting to fallback X11.

আমি কীভাবে স্ক্রীন থেকে একটি পাঠ্য নির্বাচন করতে এবং এটিকে পাঠ্যে (ক্লিপবোর্ড বা নথি) রূপান্তর করতে পারি?

ধন্যবাদ!


আপনি কি কেবল ত্রুটিটি ব্যবহার করতে পারেন gnome-screenshot -a? এছাড়াও কেন আপনি আউটপুটটিকে টেসারেক্টে পাইপ করেন? যদি আমি ভুল না হই তবে জিনোম-স্ক্রিনশট কোনও ফাইলটিতে ছবিটি সংরক্ষণ করে এবং এটি "মুদ্রণ" না করে ...
সালেম

আমি বাগজিলার মাধ্যমে যদি সতর্কতা অবলম্বন করা উচিত তবে তা নির্দোষ হওয়া উচিত। প্রশ্ন: কী auto-save-directory? এবং এটি সেখানে কিছু ফেলেছে? আকর্ষণীয় লিঙ্ক: forums.debian.net/viewtopic.php?f=6&t=85683
Rinzwind

জিনোম-স্ক্রিনচট -a -c ক্লিপবোর্ডে নির্বাচনটি অনুলিপি করার কথা, তাই না? তবে এটি টেসারেক্টে পাইপ দেওয়া একই ত্রুটি দেয়। ডিফল্ট ডিরেক্টরি হোম / ছবি (ভাল কাজ করে)।
এয়ারলিং

1
জিনোম-স্ক্রিনশট ব্যবহার করে এটি সবেমাত্র করা হয়েছে - এরপরে রঙের গভীরতা 16 মিটার থেকে কমিয়ে 2 করার জন্য আমাকে ফাইলগুলি সম্পাদনা করতে হয়েছিল (এটি সাদা পটভূমিতে কালো লেখা ছিল, তবে আজকের অভিনব হরফটি মসৃণকরণ এবং এই জাতীয় কাজগুলি আসলেই কালো ছিল না) ) আমি পরীক্ষার থেকে সঠিক ওসিআর পাওয়ার আগে আমাকে ছবিটির মূল 200% পর্যন্ত স্কেল করতে হয়েছিল - তবে আমি এটি সম্পন্ন করার পরে এটি সত্যিই ভালভাবে কাজ করেছিল।

@ স্টিভেলেক হেই স্টিভ, পরামর্শের জন্য ধন্যবাদ। চিত্রটি ওসিআর করার আগে আপনি বর্ণিত পদ্ধতিতে প্রোগ্রামটিকে স্বয়ংক্রিয়ভাবে সংশোধন করার জন্য আমি স্ক্রিপ্ট সম্পাদনা করেছি। সনাক্তকরণের হার এখন আরও ভাল হওয়া উচিত।
গ্লুটানীমেট

উত্তর:


35

সম্ভবত ইতিমধ্যে কিছু সরঞ্জাম রয়েছে যা এটি করে তবে আপনি ব্যবহার করার চেষ্টা করছেন এমন কিছু স্ক্রিনশট সরঞ্জাম এবং পরীক্ষামূলক সরঞ্জাম সহ আপনি একটি সাধারণ স্ক্রিপ্টও তৈরি করতে পারেন।

উদাহরণ হিসাবে এই স্ক্রিপ্টটি নিন (আমার সিস্টেমে আমি এটি হিসাবে এটি সংরক্ষণ করেছি /usr/local/bin/screen_ts):

#!/bin/bash
# Dependencies: tesseract-ocr imagemagick scrot

select tesseract_lang in eng rus equ ;do break;done
# Quick language menu, add more if you need other languages.

SCR_IMG=`mktemp`
trap "rm $SCR_IMG*" EXIT

scrot -s $SCR_IMG.png -q 100 
# increase quality with option -q from default 75 to 100
# Typo "$SCR_IMG.png000" does not continue with same name.


mogrify -modulate 100,0 -resize 400% $SCR_IMG.png 
#should increase detection rate

tesseract $SCR_IMG.png $SCR_IMG &> /dev/null
cat $SCR_IMG.txt
exit

এবং ক্লিপবোর্ড সমর্থন সহ:

#!/bin/bash 
# Dependencies: tesseract-ocr imagemagick scrot xsel

select tesseract_lang in eng rus equ ;do break;done
# quick language menu, add more if you need other languages.

SCR_IMG=`mktemp`
trap "rm $SCR_IMG*" EXIT

scrot -s $SCR_IMG.png -q 100    
# increase image quality with option -q from default 75 to 100

mogrify -modulate 100,0 -resize 400% $SCR_IMG.png 
#should increase detection rate

tesseract $SCR_IMG.png $SCR_IMG &> /dev/null
cat $SCR_IMG.txt | xsel -bi

exit

এটি scrotস্ক্রিনটি নিতে, tesseractপাঠ্যটি সনাক্ত করতে এবং catফলাফলটি প্রদর্শন করতে ব্যবহার করে। ক্লিপবোর্ড সংস্করণ অতিরিক্তভাবে ক্লিপবোর্ডে xselআউটপুটটি পাইপ করতে ব্যবহার করে।

নমুনা ব্যবহার

উল্লেখ্য : scrot, xsel, imagemagickএবং tesseract-ocrডিফল্ট ভাবে ইনস্টল করা হয় কিন্তু ডিফল্ট সংগ্রহস্থল থেকে পাওয়া যায়।

আপনি এটির scrotসাথে প্রতিস্থাপন করতে সক্ষম gnome-screenshotহতে পারেন তবে এটি অনেক বেশি কাজ নিতে পারে। আউটপুট সম্পর্কিত আপনি এমন কোনও কিছু ব্যবহার করতে পারেন যা পাঠ্য ফাইলটি পড়তে পারে (পাঠ্য সম্পাদকের সাথে খুলুন, স্বীকৃতিযুক্ত পাঠ্যটি বিজ্ঞপ্তি হিসাবে দেখান ইত্যাদি)।


স্ক্রিপ্টের জিইউআই সংস্করণ

ভাষা নির্বাচনী ডায়ালগ সহ ওসিআর স্ক্রিপ্টের একটি সাধারণ গ্রাফিকাল সংস্করণ এখানে রয়েছে:

#!/bin/bash
# DEPENDENCIES: tesseract-ocr imagemagick scrot yad
# AUTHOR:       Glutanimate 2013 (http://askubuntu.com/users/81372/)
# NAME:         ScreenOCR
# LICENSE:      GNU GPLv3
#
# BASED ON:     OCR script by Salem (http://askubuntu.com/a/280713/81372)

TITLE=ScreenOCR # set yad variables
ICON=gnome-screenshot

# - tesseract won't work if LC_ALL is unset so we set it here
# - you might want to delete or modify this line if you 
#   have a different locale:

export LC_ALL=en_US.UTF-8

# language selection dialog
LANG=$(yad \
    --width 300 --entry --title "$TITLE" \
    --image=$ICON \
    --window-icon=$ICON \
    --button="ok:0" --button="cancel:1" \
    --text "Select language:" \
    --entry-text \
    "eng" "ita" "deu")

# - You can modify the list of available languages by editing the line above
# - Make sure to use the same ISO codes tesseract does (man tesseract for details)
# - Languages will of course only work if you have installed their respective
#   language packs (https://code.google.com/p/tesseract-ocr/downloads/list)

RET=$? # check return status

if [ "$RET" = 252 ] || [ "$RET" = 1 ]  # WM-Close or "cancel"
  then
      exit
fi

echo "Language set to $LANG"

SCR_IMG=`mktemp` # create tempfile
trap "rm $SCR_IMG*" EXIT # make sure tempfiles get deleted afterwards

scrot -s $SCR_IMG.png -q 100 #take screenshot of area
mogrify -modulate 100,0 -resize 400% $SCR_IMG.png # postprocess to prepare for OCR
tesseract -l $LANG $SCR_IMG.png $SCR_IMG # OCR in given language
cat $SCR_IMG | xsel -bi # pass to clipboard
exit

উপরের তালিকাভুক্ত নির্ভরতাগুলি বাদ দিয়ে স্ক্রিপ্টটির কাজ করতে আপনাকে ওয়েবআপড 8 পিপিএ থেকে জেনিটি কাঁটাচামচ YAD ইনস্টল করতে হবে ।


টার্মিনাল গ্রেট কাজ! ধন্যবাদ! আমি পরীক্ষার জন্য টিউটোরিয়ালগুলি থেকে স্ক্রিনকপি কোডটেক্সট করতে চাই। ক্লিপবোর্ডে স্ক্রোট কীভাবে ব্যবহার করবেন?
এড়লিং

1
টেম্পাইলগুলি দিয়ে কী ঘটে?
এড়লিং

1
আপনি আপনার কম্পিউটারটি রিবুট না করা পর্যন্ত টেম্পাইলগুলি সেখানে থাকে। যদি এটি আপনার কাছে সমস্যা হয় তবে আপনি কেবল ( rm $SCR_IMG.png $SCR_IMG.txt) শেষে এগুলি মুছতে পারেন ।
সালেম

1
scrotনিজেই ক্লিপবোর্ড ব্যবহার করতে পারে না। তবে এর মতো সরঞ্জাম রয়েছে xclipবা xselপাঠ্যের অনুলিপি / পেস্ট করা হলে আপনার যা প্রয়োজন তা করতে পারে।
সালেম

1
সালেমের উত্তরে যুক্ত করা: আপনি যদি কে.ডি.ই চালিয়ে যাচ্ছেন তবে ক্লিপবোর্ডে উত্পন্ন পাঠ্যটি স্বয়ংক্রিয়ভাবে প্রেরণের জন্য প্রস্তুত করার জন্য আপনি অন্য একটি স্ক্রিপ্ট কল করতে পারেন। আপনি এখানে একটি উপযুক্ত স্ক্রিপ্ট পাবেন । এই স্ক্রিপ্টটি ইনস্টল করতে সেই পৃষ্ঠাতে থাকা নির্দেশাবলী অনুসরণ করুন। তারপরে আপনার যা যা করা দরকার তা হ'ল | clipboardসালেমের স্ক্রিপ্টের চূড়ান্ত লাইনটির শেষে।
ক্রিস

3

কারও কাছে আমার সলিউশন দরকার কিনা জানি না। ওয়েলল্যান্ডের সাথে চালানো এখানে একটি।

এটি কোনও পাঠ্য-সম্পাদকটিতে চরিত্র-স্বীকৃতি দেখায় এবং আপনি যদি হ্যাঁ প্যারামিটারটি "হ্যাঁ" যোগ করেন তবে আপনি গোগল ট্রান্স টুল থেকে অনুবাদ পেয়েছেন (ইন্টারনেট সংযোগ বাধ্যতামূলক) আপনি এটি ব্যবহার করার আগে পরীক্ষামূলক-ওসিআর চিত্রম্যাগিক এবং গুগল-ট্রান্স ইনস্টল করুন। আপনি স্বীকৃতি দিতে চান এমন আপনার পাঠ্যটি যখন দেখবেন তখন Alt + F2 দিয়ে জিনোমে স্ক্রিপ্টটি শুরু করুন। পাঠকের চারপাশে কর্নারটি সরান। এটাই. এই স্ক্রিপ্টটি শুধুমাত্র জিনোমের জন্য পরীক্ষামূলক ছিল। অন্যান্য উইন্ডো ম্যানেজারের জন্য এটি উপযুক্ত হতে পারে। অন্যান্য ভাষায় পাঠ্যটি অনুবাদ করতে লাইন 25-এ ভাষা আইডি প্রতিস্থাপন করুন।

#!/bin/bash
# Dependencies: tesseract-ocr imagemagick google-trans

translate="no"
translate=$1

SCR_IMG=`mktemp`
trap "rm $SCR_IMG*" EXIT

gnome-screenshot -a -f $SCR_IMG.png  
# increase quality with option -q from default 75 to 100
# Typo "$SCR_IMG.png000" does not continue with same name.


mogrify -modulate 100,0 -resize 400% $SCR_IMG.png 
#should increase detection rate

tesseract $SCR_IMG.png $SCR_IMG &> /dev/null

if [ $translate = "yes" ] ; then

        trans :de file://$SCR_IMG.txt -o $SCR_IMG.translate.txt
        gnome-text-editor $SCR_IMG.translate.txt
        else
        gnome-text-editor $SCR_IMG.txt
fi

exit

1

আমি আধুনিক সময়ে স্ক্রিনশট কীভাবে ব্যবহার করব সে সম্পর্কে একটি ব্লগিং করেছি । যদিও আমি চাইনিজকে লক্ষ্য করি কিন্তু স্ক্রিন কাস্ট এবং কোডটি ইংরেজিতে। ওসিআর হ'ল বৈশিষ্ট্যগুলির মধ্যে একটি।

আমার ওসিআরের জন্য বৈশিষ্ট্য:

  • আরও সম্পাদনা করার জন্য কনসোল + ভিমিক্স বা জেডিট-এ খুলুন।

  • ভিমিক্স + ইংলিশের জন্য, বানান পরীক্ষা করতে সক্ষম করুন।

  • হার্ড কোড ছাড়াই গতিশীল ভাষা নির্বাচন সমর্থন করুন।

  • রূপান্তরকরণ এবং টেস্টারেক্ট করার সময় অগ্রগতি ডায়ালগ যা ধীর।

ফাংশন কোড:

function ocr () {
    tmpj="$1"
    tmpocr="$2"
    tmpocr_p="$3"
    atom="$(tesseract --list-langs 2>&1)"; atom=(`echo "${atom#*:}"`); atom=(`echo "$(printf 'FALSE\n%s\n' "${atom[@]}")"`); atom[0]='True'
    ans=(`yad --center --height=200 --width=300 --separator='|' --on-top --list --title '' --text='Select Languages:' --radiolist --column '✓' --column 'Languages' "${atom[@]}" 2>/dev/null`) && ans="$(echo "${ans:5:-1}")" &&  convert "$tmpj[x2000]" -unsharp 15.6x7.8+2.69+0 "$tmpocr_p" | yad --on-top --title '' --text='Converting ...' --progress --pulsate --auto-close 2>/dev/null && tesseract "$tmpocr_p" "$tmpocr" -l "$ans" 2>>/tmp/tesseract.log | yad --percentage=50 --on-top --title '' --text='Tesseracting ...' --progress --pulsate --auto-close 2>/dev/null && if [[ "$ans" == 'eng' ]]; then konsole -e "vimx -c 'setlocal spell spelllang=en_us' -n $tmpocr.txt" 2>/dev/null; else gedit "$tmpocr.txt"; fi
    rm "$tmpocr_p"
}

কলার কোড:

for cmd in "mktemp" "convert" "tesseract" "gedit" "konsole" "vimx" "yad"; do 
    command -v $cmd >/dev/null 2>&1 || {  LANG=POSIX; xmessage "Require $cmd but it's not installed.  Aborting." >&2; exit 1; }; :;
done
tmpj="$(mktemp /tmp/`date +"%s_%Y-%m-%d"`_XXXXXXXXXX.png)"
tmpocr="$(mktemp -u /tmp/`date +"%s_%Y-%m-%d"`_ocr_XXXXX)"
tmpocr_p="$tmpocr"+'.png'
gnome-screenshot -a -f "$tmpj" 2>&1 >/dev/null | ts >>/tmp/gnome_area_PrtSc_error.log
ocr $tmpj $tmpocr $tmpocr_p &

চালানোর জন্য এই 2 কোডটি একক শেল স্ক্রিপ্টে সংযুক্ত করুন।

স্ক্রিনশট 1: এখানে চিত্র বর্ণনা লিখুন

স্ক্রিনশট 2: এখানে চিত্র বর্ণনা লিখুন


শালীন সমাধানের মতো মনে হচ্ছে তবে আপনার স্ক্রিপ্টটির পঠনযোগ্যতা খুব খারাপ
ukos

0

ধারণাটি যে কোনও সময় কোনও নতুন স্ক্রিনশট ফাইল এতে ফোল্ডারে রান টেসারেক্ট ওসিআর প্রদর্শিত হয় এবং একটি ফাইল সম্পাদকে খোলে।

আপনি এই চলমান স্ক্রিপ্টটি আপনার পছন্দসই স্ক্রিন শট আউটপুট ডিরেক্টরিটির আউটপুট ডিরেক্টরিতে রেখে যেতে পারেন

#cat wait_for_it.sh
inotifywait -m . -e create -e moved_to |
    while read path action file; do
        echo "The file '$file' appeared in directory '$path' via '$action'"
        cd "$path"
        if [ ${file: -4} == ".png" ]; then
                tesseract "$file" "$file"
                sleep 1
                gedit "$file".txt &
        fi

    done

এটিকে বিচ্ছিন্ন করার জন্য আপনার প্রয়োজন হবে

sudo apt install tesseract-ocr
sudo apt install inotify-tools

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.