Skip to content

Instantly share code, notes, and snippets.

@brbrr
Created May 6, 2015 09:41
Show Gist options
  • Save brbrr/ac09fd5ec4fc326ca688 to your computer and use it in GitHub Desktop.
Save brbrr/ac09fd5ec4fc326ca688 to your computer and use it in GitHub Desktop.
Toast messages recognition
require 'rtesseract'
require 'RMagick'
module OCRHelper
def toast?(error_msg, screens:5, delay:nil, pre_pause:nil)
take_multiple_screens(screens, delay, pre_pause)
recognize_multiple_screens(screens, error_msg)
end
# take multiple screenshots in order to catch the error on the screen
def take_multiple_screens(circles, delay, pre_pause)
sleep(pre_pause) unless pre_pause.nil?
circles.times do|index|
debug "Taking screenshot # #{index + 1}"
$driver.screenshot("#{Dir::pwd}/gen/screenshots/rec_#{index}.png")
sleep(delay) unless delay.nil?
end
end
def recognize_multiple_screens(circles, text)
circles.times do |index|
debug "Checking: #{Dir::pwd}/gen/screenshots/rec_#{index}.png"
rec_text = recognize_text_on_pic("#{Dir::pwd}/gen/screenshots/rec_#{index}.png")
return true if rec_text.include?(text)
end
false
end
#by default RTesseract gem is used here
def recognize_text_on_pic(pic_location=nil)
img = process_image(pic_location)
tess = RTesseract.new(img, lang: 'eng')
debug ocr_proc(img).text if $DEBUG
rec_text = tess.to_s # recognize
debug rec_text.gsub(/\n/, '\n')
rec_text
end
def process_image(pic_location)
img = Magick::Image.read(pic_location).first
#img = img.quantize(256,Magick::GRAYColorspace)
img.contrast.normalize.negate.posterize(3).adaptive_resize(3)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment