spec/rtesseract_spec.rb in rtesseract-1.3.0 vs spec/rtesseract_spec.rb in rtesseract-1.3.1

- old
+ new

@@ -1,123 +1,132 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper') # encoding: UTF-8 require 'pathname' + +# Class to rise error class MakeStringError def to_s - raise "error" + fail 'error' end end -describe "Rtesseract" do +describe 'Rtesseract' do before do - @path = Pathname.new(__FILE__.gsub("rtesseract_spec.rb","")).expand_path - @image_tif = @path.join("images","test.tif").to_s + @path = Pathname.new(__FILE__.gsub('rtesseract_spec.rb', '')).expand_path + @image_tif = @path.join('images', 'test.tif').to_s end - it " be instantiable" do + it ' be instantiable' do expect(RTesseract.new.class).to eql(RTesseract) - expect(RTesseract.new("").class).to eql(RTesseract) + expect(RTesseract.new('').class).to eql(RTesseract) expect(RTesseract.new(@image_tif).class).to eql(RTesseract) end - it " translate image to text" do - expect(RTesseract.new(@image_tif).to_s_without_spaces).to eql("43XF") - expect(RTesseract.new(@image_tif, {:processor => 'mini_magick'}).to_s_without_spaces).to eql("43XF") - expect(RTesseract.new(@path.join("images","test1.tif").to_s).to_s_without_spaces).to eql("V2V4") - expect(RTesseract.new(@path.join("images","test with spaces.tif").to_s).to_s_without_spaces).to eql("V2V4") + it ' translate image to text' do + expect(RTesseract.new(@image_tif).to_s_without_spaces).to eql('43XF') + expect(RTesseract.new(@image_tif, processor: 'mini_magick').to_s_without_spaces).to eql('43XF') + expect(RTesseract.new(@path.join('images', 'test1.tif').to_s).to_s_without_spaces).to eql('V2V4') + expect(RTesseract.new(@path.join('images', 'test with spaces.tif').to_s).to_s_without_spaces).to eql('V2V4') + end + it ' translate images .png, .jpg, .bmp' do + expect(RTesseract.new(@path.join('images', 'test.png').to_s).to_s_without_spaces).to eql('HW9W') + expect(RTesseract.new(@path.join('images', 'test.jpg').to_s).to_s_without_spaces).to eql('3R8F') + expect(RTesseract.new(@path.join('images', 'test.bmp').to_s).to_s_without_spaces).to eql('FLA6') end - it " translate images .png, .jpg, .bmp" do - expect(RTesseract.new(@path.join("images","test.png").to_s).to_s_without_spaces).to eql("HW9W") - expect(RTesseract.new(@path.join("images","test.jpg").to_s).to_s_without_spaces).to eql("3R8F") - expect(RTesseract.new(@path.join("images","test.bmp").to_s).to_s_without_spaces).to eql("FLA6") + it ' should not error with depth > 32' do + #expect(RTesseract.new(@path.join('images', 'README.pdf').to_s, debug: true).to_s_without_spaces).to eql('') end - it " support diferent processors" do - #Rmagick - expect(RTesseract.new(@image_tif).to_s_without_spaces).to eql("43XF") - expect(RTesseract.new(@image_tif, :processor => 'rmagick').to_s_without_spaces).to eql("43XF") - expect(RTesseract.new(@path.join("images","test.png").to_s, :processor => 'rmagick').to_s_without_spaces).to eql("HW9W") + it ' support diferent processors' do + # Rmagick + expect(RTesseract.new(@image_tif).to_s_without_spaces).to eql('43XF') + expect(RTesseract.new(@image_tif, processor: 'rmagick').to_s_without_spaces).to eql('43XF') + expect(RTesseract.new(@path.join('images', 'test.png').to_s, processor: 'rmagick').to_s_without_spaces).to eql('HW9W') - #MiniMagick - expect(RTesseract.new(@image_tif, :processor => 'mini_magick').to_s_without_spaces).to eql("43XF") - expect(RTesseract.new(@path.join("images","test.png").to_s, :processor => 'mini_magick').to_s_without_spaces).to eql("HW9W") + # MiniMagick + expect(RTesseract.new(@image_tif, processor: 'mini_magick').to_s_without_spaces).to eql('43XF') + expect(RTesseract.new(@path.join('images', 'test.png').to_s, processor: 'mini_magick').to_s_without_spaces).to eql('HW9W') - #QuickMagick - expect(RTesseract.new(@image_tif, :processor => 'quick_magick').to_s_without_spaces).to eql("43XF") - expect(RTesseract.new(@path.join("images","test.png").to_s, :processor => 'quick_magick').to_s_without_spaces).to eql("HW9W") + # QuickMagick + expect(RTesseract.new(@image_tif, processor: 'quick_magick').to_s_without_spaces).to eql('43XF') + expect(RTesseract.new(@path.join('images', 'test.png').to_s, processor: 'quick_magick').to_s_without_spaces).to eql('HW9W') - #NoneMagick - expect(RTesseract.new(@image_tif, :processor => 'none').to_s_without_spaces).to eql("43XF") + # NoneMagick + expect(RTesseract.new(@image_tif, processor: 'none').to_s_without_spaces).to eql('43XF') end - it " change the image" do + it ' change the image' do image = RTesseract.new(@image_tif) - expect(image.to_s_without_spaces).to eql("43XF") - image.source = @path.join("images","test1.tif").to_s - expect(image.to_s_without_spaces).to eql("V2V4") + expect(image.to_s_without_spaces).to eql('43XF') + image.source = @path.join('images', 'test1.tif').to_s + expect(image.to_s_without_spaces).to eql('V2V4') end - it " select the language" do - #English - expect(RTesseract.new(@image_tif,{:lang=>"eng"}).lang).to eql(" -l eng ") - expect(RTesseract.new(@image_tif,{:lang=>"en"}).lang).to eql(" -l eng ") - expect(RTesseract.new(@image_tif,{:lang=>"en-US"}).lang).to eql(" -l eng ") - expect(RTesseract.new(@image_tif,{:lang=>"english"}).lang).to eql(" -l eng ") + it ' returns the source' do + image = RTesseract.new(@image_tif) + expect(image.source).to eql(Pathname.new(@image_tif)) + end - #Portuguese - expect(RTesseract.new(@image_tif,{:lang=>"por"}).lang).to eql(" -l por ") - expect(RTesseract.new(@image_tif,{:lang=>"pt-BR"}).lang).to eql(" -l por ") - expect(RTesseract.new(@image_tif,{:lang=>"pt-br"}).lang).to eql(" -l por ") - expect(RTesseract.new(@image_tif,{:lang=>"pt"}).lang).to eql(" -l por ") - expect(RTesseract.new(@image_tif,{:lang=>"portuguese"}).lang).to eql(" -l por ") + it ' select the language' do + # English + expect(RTesseract.new(@image_tif, lang: 'eng').lang).to eql(' -l eng ') + expect(RTesseract.new(@image_tif, lang: 'en').lang).to eql(' -l eng ') + expect(RTesseract.new(@image_tif, lang: 'en-US').lang).to eql(' -l eng ') + expect(RTesseract.new(@image_tif, lang: 'english').lang).to eql(' -l eng ') - expect(RTesseract.new(@image_tif,{:lang=>"eng"}).to_s_without_spaces).to eql("43XF") - #RTesseract.new(@image_tif,{:lang=>"por"}).to_s_without_spaces).to eql("43XF") - expect(RTesseract.new(@image_tif,{:lang=>"eng"}).lang).to eql(" -l eng ") + # Portuguese + expect(RTesseract.new(@image_tif, lang: 'por').lang).to eql(' -l por ') + expect(RTesseract.new(@image_tif, lang: 'pt-BR').lang).to eql(' -l por ') + expect(RTesseract.new(@image_tif, lang: 'pt-br').lang).to eql(' -l por ') + expect(RTesseract.new(@image_tif, lang: 'pt').lang).to eql(' -l por ') + expect(RTesseract.new(@image_tif, lang: 'portuguese').lang).to eql(' -l por ') - #Inválid lang object - expect(RTesseract.new(@image_tif,{:lang=>MakeStringError.new}).lang).to eql("") + expect(RTesseract.new(@image_tif, lang: 'eng').to_s_without_spaces).to eql('43XF') + + expect(RTesseract.new(@image_tif, lang: 'eng').lang).to eql(' -l eng ') + + # Invalid lang object + expect(RTesseract.new(@image_tif, lang: MakeStringError.new).lang).to eql('') end - it " select options" do - expect(RTesseract.new(@image_tif).options_cmd).to eql([]) - expect(RTesseract.new(@image_tif, options: 'digits').options_cmd).to eql(['digits']) - expect(RTesseract.new(@image_tif, options: :digits).options_cmd).to eql([:digits]) - expect(RTesseract.new(@image_tif, options: [:digits, :quiet]).options_cmd).to eql([:digits, :quiet]) + it ' select options' do + expect(RTesseract.new(@image_tif).options_cmd).to eql([]) + expect(RTesseract.new(@image_tif, options: 'digits').options_cmd).to eql(['digits']) + expect(RTesseract.new(@image_tif, options: :digits).options_cmd).to eql([:digits]) + expect(RTesseract.new(@image_tif, options: [:digits, :quiet]).options_cmd).to eql([:digits, :quiet]) end - it " be configurable" do - expect(RTesseract.new(@image_tif,{:chop_enable=>0,:enable_assoc=>0,:display_text=>0}).config).to eql("chop_enable 0\nenable_assoc 0\ndisplay_text 0") - expect(RTesseract.new(@image_tif,{:chop_enable=>0}).config).to eql("chop_enable 0") - expect(RTesseract.new(@image_tif,{:chop_enable=>0,:enable_assoc=>0}).config).to eql("chop_enable 0\nenable_assoc 0") - expect(RTesseract.new(@image_tif,{:chop_enable=>0}).to_s_without_spaces).to eql("43XF") + it ' be configurable' do + expect(RTesseract.new(@image_tif, chop_enable: 0, enable_assoc: 0, display_text: 0).config).to eql("chop_enable 0\nenable_assoc 0\ndisplay_text 0") + expect(RTesseract.new(@image_tif, chop_enable: 0).config).to eql('chop_enable 0') + expect(RTesseract.new(@image_tif, chop_enable: 0, enable_assoc: 0).config).to eql("chop_enable 0\nenable_assoc 0") + expect(RTesseract.new(@image_tif, chop_enable: 0).to_s_without_spaces).to eql('43XF') end - it " crop image" do - expect(RTesseract.new(@image_tif,{:psm=>7}).crop!(140,10,36,40).to_s_without_spaces).to eql("4") - expect(RTesseract.new(@image_tif,{:psm=>7}).crop!(180,10,36,40).to_s_without_spaces).to eql("3") - expect(RTesseract.new(@image_tif,{:psm=>7}).crop!(216,10,20,40).to_s_without_spaces).to eql("X") - expect(RTesseract.new(@image_tif,{:psm=>7}).crop!(240,10,30,40).to_s_without_spaces).to eql("F") + it ' crop image' do + expect(RTesseract.new(@image_tif, psm: 7).crop!(140, 10, 36, 40).to_s_without_spaces).to eql('4') + expect(RTesseract.new(@image_tif, psm: 7).crop!(180, 10, 36, 40).to_s_without_spaces).to eql('3') + expect(RTesseract.new(@image_tif, psm: 7).crop!(216, 10, 20, 40).to_s_without_spaces).to eql('X') + expect(RTesseract.new(@image_tif, psm: 7).crop!(240, 10, 30, 40).to_s_without_spaces).to eql('F') end + it ' read image from blob' do + image = Magick::Image.read(@path.join('images', 'test.png').to_s).first + blob = image.quantize(256, Magick::GRAYColorspace).to_blob - it " read image from blob" do - image = Magick::Image.read(@path.join("images","test.png").to_s).first - blob = image.quantize(256,Magick::GRAYColorspace).to_blob - - test = RTesseract.new("", {:psm => 7}) + test = RTesseract.new('', psm: 7) test.from_blob(blob) - expect(test.to_s_without_spaces).to eql("HW9W") + expect(test.to_s_without_spaces).to eql('HW9W') - test = RTesseract.new("", {:psm => 7}) - expect{test.from_blob('') }.to raise_error(RTesseract::ConversionError) + test = RTesseract.new('', psm: 7) + expect { test.from_blob('') }.to raise_error(RTesseract::ConversionError) end - it " use a instance" do - expect(RTesseract.new(Magick::Image.read(@image_tif.to_s).first).to_s_without_spaces).to eql("43XF") + it ' use a instance' do + expect(RTesseract.new(Magick::Image.read(@image_tif.to_s).first).to_s_without_spaces).to eql('43XF') expect(RMagickProcessor.a_name?('teste')).to eql(false) expect(RMagickProcessor.a_name?('rmagick')).to eql(true) expect(RMagickProcessor.a_name?('RMagickProcessor')).to eql(true) expect(MiniMagickProcessor.a_name?('teste')).to eql(false) expect(MiniMagickProcessor.a_name?('mini_magick')).to eql(true) @@ -127,48 +136,52 @@ expect(QuickMagickProcessor.a_name?('QuickMagickProcessor')).to eql(true) expect(NoneProcessor.a_name?('none')).to eql(true) expect(NoneProcessor.a_name?('NoneProcessor')).to eql(true) end - it " change image in a block" do - test = RTesseract.read(@path.join("images","test.png").to_s){} + it ' change image in a block' do + test = RTesseract.read(@path.join('images', 'test.png').to_s) {} expect(test.class).to eql(RTesseract) test = RTesseract.new(@image_tif) test.read do |image| image = image.quantize(256, Magick::GRAYColorspace) end - expect(test.to_s_without_spaces).to eql("43XF") + expect(test.to_s_without_spaces).to eql('43XF') - test = RTesseract.read(@path.join("images","test.png").to_s) do |image| - #image = image.white_threshold(245) - #image = image.quantize(256,Magick::GRAYColorspace) + test = RTesseract.new(@path.join('images', 'blank.tif').to_s) + test.read do |image| + image + end + expect(test.to_s_without_spaces).to eql('') + + test = RTesseract.read(@path.join('images', 'test.png').to_s) do |image| image.rotate(90) end - expect(test.to_s_without_spaces).to eql("HW9W") + expect(test.to_s_without_spaces).to eql('HW9W') - test = RTesseract.read(@path.join("images","test.jpg").to_s,{:lang=>'en'}) do |image| + test = RTesseract.read(@path.join('images', 'test.jpg').to_s, lang: 'en') do |image| image = image.white_threshold(245).quantize(256, Magick::GRAYColorspace) end - expect(test.to_s_without_spaces).to eql("3R8F") + expect(test.to_s_without_spaces).to eql('3R8F') - test = RTesseract.read(@path.join("images","test.jpg").to_s,{:lang=>'en', :processor => 'mini_magick'}) do |image| - image.gravity "south" + test = RTesseract.read(@path.join('images', 'test.jpg').to_s, lang: 'en', processor: 'mini_magick') do |image| + image.gravity 'south' end - expect(test.to_s_without_spaces).to eql("3R8F") + expect(test.to_s_without_spaces).to eql('3R8F') end - it " get a error" do - expect{ RTesseract.new(@path.join("images","test.jpg").to_s, {:command => "tesseract_error"}).to_s }.to raise_error(RTesseract::ConversionError) - expect{ RTesseract.new(@path.join("images","test_not_exists.png").to_s).to_s }.to raise_error(RTesseract::ImageNotSelectedError) + it ' get a error' do + expect { RTesseract.new(@path.join('images', 'test.jpg').to_s, command: 'tesseract_error').to_s }.to raise_error(RTesseract::ConversionError) + expect { RTesseract.new(@path.join('images', 'test_not_exists.png').to_s).to_s }.to raise_error(RTesseract::ImageNotSelectedError) - #Inválid psm object - expect(RTesseract.new(@image_tif,{:psm=>MakeStringError.new}).psm).to eql("") + # Invalid psm object + expect(RTesseract.new(@image_tif, psm: MakeStringError.new).psm).to eql('') end - it "remove a file" do + it 'remove a file' do rtesseract = RTesseract.new('.') rtesseract.remove_file(Tempfile.new('config')) - expect{ rtesseract.remove_file(Pathname.new(Dir.tmpdir).join("test_not_exists")) }.to raise_error(RTesseract::TempFilesNotRemovedError) + expect { rtesseract.remove_file(Pathname.new(Dir.tmpdir).join('test_not_exists')) }.to raise_error(RTesseract::TempFilesNotRemovedError) end end