mork 0.1.3 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/mork.gemspec CHANGED
@@ -18,9 +18,9 @@ Gem::Specification.new do |s|
18
18
  s.require_paths = ["lib"]
19
19
 
20
20
  # dependencies:
21
- s.add_dependency 'narray', '~> 0.6'
22
- s.add_dependency 'rmagick', '~> 2.13'
23
- s.add_runtime_dependency 'prawn', '~> 1.3', '>= 1.3.0'
21
+ s.add_dependency 'narray', '~> 0.6'
22
+ s.add_dependency 'mini_magick', '~> 3.8'
23
+ s.add_dependency 'prawn', '~> 1.3'
24
24
  s.add_development_dependency 'rake', '~> 10.3'
25
25
  s.add_development_dependency 'rspec', '~> 3.1'
26
26
  s.add_development_dependency 'guard', '~> 2.6'
@@ -2,73 +2,76 @@ require 'spec_helper'
2
2
 
3
3
  module Mork
4
4
  describe GridOMR do
5
- let(:grom) { GridOMR.new 1601, 2281, 'spec/samples/layout.yml' }
5
+ before(:each) do
6
+ @grom = GridOMR.new 'spec/samples/layout.yml'
7
+ @grom.set_page_size 1601, 2281
8
+ end
6
9
 
7
10
  describe '#choice_cell_area' do
8
11
  it 'returns the coordinates of the first choice cell' do
9
- grom.choice_cell_area(0,0).should == {x: 63, y: 436, w: 51, h: 41}
12
+ @grom.choice_cell_area(0,0).should == {x: 63, y: 436, w: 51, h: 41}
10
13
  end
11
14
 
12
15
  it 'returns the coordinates of the last choice cell' do
13
- grom.choice_cell_area(119,4).should == {x: 1411, y: 2108, w: 51, h: 41}
16
+ @grom.choice_cell_area(119,4).should == {x: 1411, y: 2108, w: 51, h: 41}
14
17
  end
15
18
  end
16
19
 
17
20
  describe '#barcode_bit_area' do
18
21
  # it 'returns the coordinates of the first barcode bit area' do
19
- # grom.barcode_bit_area(0).should == {x: 160, y: 2260, w: 25, h: 21}
22
+ # @grom.barcode_bit_area(0).should == {x: 160, y: 2260, w: 25, h: 21}
20
23
  # end
21
24
  #
22
25
  # it 'returns the coordinates of the last barcode bit area' do
23
- # grom.barcode_bit_area(39).should == {x: 1475, y: 2260, w: 25, h: 21}
26
+ # @grom.barcode_bit_area(39).should == {x: 1475, y: 2260, w: 25, h: 21}
24
27
  # end
25
28
  #
26
29
  # it 'fails if an invalid barcode bit is requested' do
27
- # lambda { grom.barcode_bit_area(40) }.should raise_error
30
+ # lambda { @grom.barcode_bit_area(40) }.should raise_error
28
31
  # end
29
32
  end
30
33
 
31
34
  describe '#rm_search_area' do
32
35
  context 'on the first iteration' do
33
36
  it 'returns an {:x, :y, :w, :h} hash of coordinates in pixels for the :tl reg_mark corner' do
34
- c = grom.rm_search_area :tl, 0
37
+ c = @grom.rm_search_area :tl, 0
35
38
  c.should == {x: 15, y: 15, w: 91, h: 92}
36
39
  end
37
40
 
38
41
  it 'returns an {:x, :y, :w, :h} hash of coordinates in pixels for the :tr reg_mark corner' do
39
- c = grom.rm_search_area :tr, 0
42
+ c = @grom.rm_search_area :tr, 0
40
43
  c.should == { x: 1494, y: 15, w: 91, h: 92 }
41
44
  end
42
45
 
43
46
  it 'returns an {:x, :y, :w, :h} hash of coordinates in pixels for the :br reg_mark corner' do
44
- c = grom.rm_search_area :br, 0
47
+ c = @grom.rm_search_area :br, 0
45
48
  c.should == { x: 1494, y: 2173, w: 91, h: 92 }
46
49
  end
47
50
 
48
51
  it 'returns an {:x, :y, :w, :h} hash of coordinates in pixels for the :bl reg_mark corner' do
49
- c = grom.rm_search_area :bl, 0
52
+ c = @grom.rm_search_area :bl, 0
50
53
  c.should == { x: 15, y: 2173, w: 91, h: 92 }
51
54
  end
52
55
  end
53
56
 
54
57
  context 'on the third iteration' do
55
58
  it 'returns an {:x, :y, :w, :h} hash of coordinates in pixels for the :tl reg_mark corner' do
56
- c = grom.rm_search_area :tl, 2
59
+ c = @grom.rm_search_area :tl, 2
57
60
  c.should == { x: 15, y: 15, w: 130, h: 131 }
58
61
  end
59
62
 
60
63
  it 'returns an {:x, :y, :w, :h} hash of coordinates in pixels for the :tr reg_mark corner' do
61
- c = grom.rm_search_area :tr, 2
64
+ c = @grom.rm_search_area :tr, 2
62
65
  c.should == { x: 1456, y: 15, w: 130, h: 131 }
63
66
  end
64
67
 
65
68
  it 'returns an {:x, :y, :w, :h} hash of coordinates in pixels for the :br reg_mark corner' do
66
- c = grom.rm_search_area :br, 2
69
+ c = @grom.rm_search_area :br, 2
67
70
  c.should == { x: 1456, y: 2135, w: 130, h: 131 }
68
71
  end
69
72
 
70
73
  it 'returns an {:x, :y, :w, :h} hash of coordinates in pixels for the :bl reg_mark corner' do
71
- c = grom.rm_search_area :bl, 2
74
+ c = @grom.rm_search_area :bl, 2
72
75
  c.should == { x: 15, y: 2135, w: 130, h: 131 }
73
76
  end
74
77
  end
@@ -76,46 +79,46 @@ module Mork
76
79
 
77
80
  describe '#rm_edgy_x' do
78
81
  it 'returns the minimum acceptable number of pixels from the regmark center to the edge of the rm_search_area' do
79
- grom.rm_edgy_x.should == 24
82
+ @grom.rm_edgy_x.should == 24
80
83
  end
81
84
  it 'returns an integer' do
82
- grom.rm_edgy_x.should be_a Fixnum
85
+ @grom.rm_edgy_x.should be_a Fixnum
83
86
  end
84
87
  end
85
88
 
86
89
  describe '#rm_edgy_y' do
87
90
  it 'returns the minimum acceptable number of pixels from the regmark center to the edge of the rm_search_area' do
88
- grom.rm_edgy_y.should == 24
91
+ @grom.rm_edgy_y.should == 24
89
92
  end
90
93
  it 'returns an integer' do
91
- grom.rm_edgy_y.should be_a Fixnum
94
+ @grom.rm_edgy_y.should be_a Fixnum
92
95
  end
93
96
  end
94
97
 
95
98
  describe '#rm_max_search_area_side' do
96
99
  it 'returns the maximum extent of the regmark search area, 1/4 of the raw image horizontal pixels' do
97
- grom.rm_max_search_area_side.should == 400
100
+ @grom.rm_max_search_area_side.should == 400
98
101
  end
99
102
  it 'returns an integer' do
100
- grom.rm_max_search_area_side.should be_a Fixnum
103
+ @grom.rm_max_search_area_side.should be_a Fixnum
101
104
  end
102
105
  end
103
106
 
104
107
  describe '#max_choices_per_question' do
105
108
  it 'returns the maximum number of choice cells per question' do
106
- grom.max_choices_per_question.should == 5
109
+ @grom.max_choices_per_question.should == 5
107
110
  end
108
111
  end
109
112
 
110
113
  describe '#paper_white_area' do
111
114
  it 'returns the coordinates of the white area used for barcode calibration' do
112
- grom.paper_white_area.should == {x: 93, y: 2260, w: 25, h: 21}
115
+ @grom.paper_white_area.should == {x: 93, y: 2260, w: 25, h: 21}
113
116
  end
114
117
  end
115
118
 
116
119
  describe '#ink_black_area' do
117
120
  it 'returns the coordinates of the barcode calibration bar' do
118
- grom.ink_black_area.should == {x: 126, y: 2260, w: 25, h: 21}
121
+ @grom.ink_black_area.should == {x: 126, y: 2260, w: 25, h: 21}
119
122
  end
120
123
  end
121
124
  end
@@ -1,37 +1,37 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Mork
4
- describe MimageList do
5
- before(:all) do
6
- tpg = sample_img(:two_pages)
7
- @mlist = MimageList.new(tpg.filename)
8
- end
9
-
10
- describe ".new" do
11
- it "should raise an error unless called with a string" do
12
- lambda {
13
- MimageList.new(666)
14
- }.should raise_error
15
- end
16
- end
17
-
18
- describe "[]" do
19
- it "should return the 1st mimage in the stack" do
20
- @mlist[0].should be_a(Mimage)
21
- end
22
-
23
- it "should return the last mimage in the stack" do
24
- @mlist[1].should be_a(Mimage)
25
- end
26
- end
27
-
28
- describe "each" do
29
- it "should loop over all images" do
30
- @mlist.each do |m|
31
- puts m.inspect
32
- m.should be_a(Mimage)
33
- end
34
- end
35
- end
36
- end
4
+ # describe MimageList do
5
+ # before(:all) do
6
+ # tpg = sample_img(:two_pages)
7
+ # @mlist = MimageList.new(tpg.filename)
8
+ # end
9
+ #
10
+ # describe ".new" do
11
+ # it "should raise an error unless called with a string" do
12
+ # lambda {
13
+ # MimageList.new(666)
14
+ # }.should raise_error
15
+ # end
16
+ # end
17
+ #
18
+ # describe "[]" do
19
+ # it "should return the 1st mimage in the stack" do
20
+ # @mlist[0].should be_a(Mimage)
21
+ # end
22
+ #
23
+ # it "should return the last mimage in the stack" do
24
+ # @mlist[1].should be_a(Mimage)
25
+ # end
26
+ # end
27
+ #
28
+ # describe "each" do
29
+ # it "should loop over all images" do
30
+ # @mlist.each do |m|
31
+ # puts m.inspect
32
+ # m.should be_a(Mimage)
33
+ # end
34
+ # end
35
+ # end
36
+ # end
37
37
  end
@@ -2,46 +2,47 @@ require 'spec_helper'
2
2
 
3
3
  module Mork
4
4
  describe Mimage do
5
- let(:smp) { sample_img(:sample01) }
6
- let(:mim) { Mimage.new(smp.filename) }
5
+ let(:sgi) { sample_img 'sample-gray' }
6
+ let(:sg) { Mimage.new sgi.filename, GridOMR.new(sgi.grid_file) }
7
7
 
8
- describe ".new" do
9
- it "should create a Mimage from a string pointing to an existing bitmap file" do
10
- mim.should be_a(Mimage)
8
+ describe 'basics' do
9
+ it 'returns the width' do
10
+ expect(sg.width).to eq sgi.width
11
11
  end
12
- it "should create a Mimage from an existing Magick::ImageList object" do
13
- i = Magick::ImageList.new smp.filename
14
- Mimage.new(i).should be_a(Mimage)
12
+
13
+ it 'returns the height' do
14
+ expect(sg.height).to eq sgi.height
15
15
  end
16
- it "should create a Mimage from an existing Magick::Image object" do
17
- i = Magick::ImageList.new smp.filename
18
- Mimage.new(i.first).should be_a(Mimage)
16
+
17
+ it 'returns the pixels as an array' do
18
+ expect(sg.send :raw_pixels).to be_a NPatch
19
19
  end
20
- it "should raise an error if called with a fixnum" do
21
- lambda { Mimage.new 1 }.should raise_error
20
+
21
+ it 'returns the correct number of pixels' do
22
+ expect(sg.send(:raw_pixels).length).to eq sgi.width * sgi.height
22
23
  end
23
- end
24
-
25
- describe "#crop" do
26
- it "should return a Mimage" do
27
- mim.crop({x: 0, y: 0, w: 10, h: 10}).should be_a(Mimage)
28
- end
29
- it "should return a Mimage of the correct width" do
30
- i = mim.crop({x: 0, y: 0, w: 20, h: 10})
31
- i.width.should == 20
24
+
25
+ it 'returns the stretched array' do
26
+ expect(sg.send(:reg_pixels).length).to eq sgi.width * sgi.height
32
27
  end
33
- it "should return a Mimage of the correct height" do
34
- i = mim.crop({x: 0, y: 0, w: 10, h: 10})
35
- i.height.should == 10
28
+
29
+ it 'raises an error if the file is not found' do
30
+ expect { Mimage.new 'non_existing_file' }.to raise_error
36
31
  end
37
32
  end
38
-
39
- describe "#crop!" do
40
- it "should reduce the Mimage to the correct width" do
41
- mim.crop!({x: 0, y: 0, w: 20, h: 10}).width.should == 20
42
- end
43
- it "should reduce the Mimage to the correct height" do
44
- mim.crop!({x: 0, y: 0, w: 20, h: 10}).height.should == 10
33
+
34
+ describe 'inspecting' do
35
+ it 'writes out average whiteness of choice cells' do
36
+ qz = sample_img 'silvia'
37
+ s = Mimage.new qz.filename, GridOMR.new(qz.grid_file)
38
+ File.open('spec/out/choices.txt', 'w') do |f|
39
+ 120.times do |q|
40
+ t = (0..4).collect do |c|
41
+ s.send(:shade_of, q, c).round
42
+ end
43
+ f.puts "#{q+1}: #{t.join(' ')}"
44
+ end
45
+ end
45
46
  end
46
47
  end
47
48
  end
@@ -2,26 +2,49 @@ require 'spec_helper'
2
2
 
3
3
  module Mork
4
4
  describe NPatch do
5
- let(:rgm) { sample_img(:reg_mark) }
6
- let(:mim) { Mimage.new(rgm.filename) }
5
+ let(:rm) { NPatch.new 'spec/samples/rm01.jpeg', 134, 104 }
7
6
 
8
7
  describe ".new" do
9
8
  it "should create an NPatch" do
10
- NPatch.new(mim).should be_an(NPatch)
9
+ expect(rm).to be_an NPatch
11
10
  end
12
11
  end
13
12
 
14
- describe "#dark_centroid" do
15
- it "should return the correct X" do
16
- x, y = NPatch.new(mim).dark_centroid
17
- x.should == rgm.info["centroid_x"]
13
+ describe '#dark_centroid' do
14
+ it 'computes centers for rm01' do
15
+ np = NPatch.new 'spec/samples/rm01.jpeg', 134, 104
16
+ expect(np.dark_centroid).to eq [50, 60]
17
+ np = NPatch.new 'spec/samples/rm02.jpeg', 114, 117
18
+ expect(np.dark_centroid).to eq [69, 71]
19
+ np = NPatch.new 'spec/samples/rm03.jpeg', 124, 105
20
+ expect(np.dark_centroid).to eq [71, 61]
21
+ np = NPatch.new 'spec/samples/rm04.jpeg', 144, 117
22
+ expect(np.dark_centroid).to eq [84, 52]
23
+ np = NPatch.new 'spec/samples/rm05.jpeg', 144, 117
24
+ expect(np.dark_centroid).to eq [84, 52]
18
25
  end
19
-
20
- it "should return the correct Y" do
21
- x, y = NPatch.new(mim).dark_centroid
22
- y.should == rgm.info["centroid_y"]
26
+ end
27
+
28
+ describe '#average' do
29
+ it 'works' do
30
+ c = {x: 30, y: 35, w: 46, h: 46}
31
+ puts rm.average c
32
+ c = {x: 85, y: 10, w: 46, h: 46}
33
+ puts rm.average c
23
34
  end
24
35
  end
36
+
37
+ # describe "#dark_centroid" do
38
+ # it "should return the correct X" do
39
+ # x, y = NPatch.new(mim).dark_centroid
40
+ # x.should == rgm.info["centroid_x"]
41
+ # end
42
+ #
43
+ # it "should return the correct Y" do
44
+ # x, y = NPatch.new(mim).dark_centroid
45
+ # y.should == rgm.info["centroid_y"]
46
+ # end
47
+ # end
25
48
  end
26
49
  end
27
50
 
@@ -2,61 +2,58 @@ require 'spec_helper'
2
2
 
3
3
  module Mork
4
4
  describe SheetOMR do
5
+
5
6
  context 'highlighting' do
6
7
  # since these specs change the @crop, they must be run in isolation
7
8
  # with the SheetOMR rebuilt each time, even though it is time consuming!
8
- let(:sheet) { SheetOMR.new 'spec/samples/sample_gray.jpg', 'spec/samples/layout.yml' }
9
+ let(:shinfo) { sample_img 'sample-gray' }
10
+ let(:sheet) { SheetOMR.new shinfo.filename, shinfo.grid_file }
9
11
 
10
12
  it 'highlights the registration areas and frame' do
11
- sheet.highlight_reg_area
13
+ sheet.highlight_registration
12
14
  sheet.write_raw 'spec/out/reg_areas.jpg'
13
15
  end
14
16
 
15
- it 'should highlight all areas' do
16
- sheet.highlight_all
17
+ it 'highlights all choice cells' do
18
+ sheet.highlight_all_choices
17
19
  sheet.write 'spec/out/all_highlights.jpg'
18
20
  end
19
21
 
20
- it 'should highlight marked cells and outline correct responses' do
22
+ it 'highlights marked cells' do
21
23
  sheet.highlight_marked
22
- sheet.outline [[1],[1],[2],[2],[3,4],[],[0,1,2,3,4]]
23
24
  sheet.write 'spec/out/marked_highlights.jpg'
24
25
  end
26
+
27
+ it 'outlines some responses' do
28
+ sheet.outline [[1],[1],[2],[2],[3,4],[],[0,1,2,3,4], [],[1],[2],[2],[3,4],[],[0,1,2,3,4]]
29
+ sheet.write 'spec/out/outlines.jpg'
30
+ end
31
+
32
+ it 'highlights marked cells and outline correct responses', focus: true do
33
+ sheet.highlight_marked
34
+ sheet.outline [[1],[1],[2],[2],[3,4],[],[0,1,2,3,4], [],[1],[2],[2],[3,4],[],[0,1,2,3,4]]
35
+ sheet.write 'spec/out/marks_and_outs.jpg'
36
+ end
25
37
 
26
38
  it 'highlights marked cells of a problematic one' do
27
- s = SheetOMR.new 'spec/samples/qzc013.jpg'
39
+ si = sample_img 'silvia'
40
+ s = SheetOMR.new si.filename, si.grid_file
28
41
  s.highlight_marked
29
42
  s.write 'spec/out/problem.jpg'
30
43
  end
31
44
 
32
- it 'writes out average whiteness of choice cells' do
33
- s = SheetOMR.new 'spec/samples/qzc013.jpg'
34
- puts "Choice threshold: #{s.send :choice_threshold}"
35
- File.open('spec/out/choices.txt', 'w') do |f|
36
- 120.times do |q|
37
- t = (0..4).collect do |c|
38
- s.send(:shade_of, q, c).round
39
- end
40
- f.puts "#{q+1}: #{t.join(' ')}"
41
- end
42
- end
43
-
44
- mf = File.open('spec/out/marked.txt', 'w')
45
- uf = File.open('spec/out/unmarked.txt', 'w')
46
- 120.times do |q|
47
- 5.times do |c|
48
- shade = s.send(:shade_of, q, c)
49
- s.marked?(q,c) ? mf.puts(shade) : uf.puts(shade)
50
- end
51
- end
52
- mf.close
53
- uf.close
45
+ it 'highlights the barcode' do
46
+ si = sample_img 'sample-gray'
47
+ s = SheetOMR.new si.filename, si.grid_file
48
+ s.highlight_barcode
49
+ s.write 'spec/out/code_bits.jpg'
54
50
  end
55
51
  end
56
52
 
57
53
  context 'marking a nicely printed and scanned sheet' do
58
54
  before(:all) do
59
- @sheet = SheetOMR.new('spec/samples/sample_gray.jpg', 'spec/samples/layout.yml')
55
+ @shinfo = sample_img 'sample-gray'
56
+ @sheet = SheetOMR.new @shinfo.filename, @shinfo.grid_file
60
57
  end
61
58
 
62
59
  describe '#valid?' do
@@ -78,27 +75,16 @@ module Mork
78
75
  expect(@sheet.marked?(2,3)).to be_falsy
79
76
  end
80
77
 
81
- it 'writes out average whiteness of choice cells' do
78
+ it 'writes out markedness' do
82
79
  puts "Choice threshold: #{@sheet.send :choice_threshold}"
83
- File.open('spec/out/choices.txt', 'w') do |f|
84
- 120.times do |q|
85
- t = (0..4).collect do |c|
86
- @sheet.send(:shade_of, q, c).round
87
- end
88
- f.puts "#{q+1}: #{t.join(' ')}"
89
- end
90
- end
91
-
92
80
  mf = File.open('spec/out/marked.txt', 'w')
93
- uf = File.open('spec/out/unmarked.txt', 'w')
94
81
  120.times do |q|
95
- 5.times do |c|
96
- shade = @sheet.send(:shade_of, q, c)
97
- @sheet.marked?(q,c) ? mf.puts(shade) : uf.puts(shade)
82
+ x = 5.times.collect do |c|
83
+ @sheet.marked?(q,c) ? '1' : '0'
98
84
  end
85
+ mf.puts x.join(' ')
99
86
  end
100
87
  mf.close
101
- uf.close
102
88
  end
103
89
  end
104
90
 
@@ -139,25 +125,16 @@ module Mork
139
125
  s2 = SheetOMR.new('spec/samples/sample02.jpg')
140
126
  s2.barcode_string.should == barcode_string
141
127
  s2.barcode.should == 8608
142
- s2.highlight_barcode
143
- s2.write 'spec/out/code_bits.jpg'
144
128
  end
145
129
 
146
130
  it 'should read the 666 bit string' do
147
- s2 = SheetOMR.new('spec/samples/sheet666.jpg')
148
- s2.barcode.should == 666666666666
149
- s2.highlight_barcode
150
- s2.write 'spec/out/code_bits666.jpg'
131
+ sh = sample_img 'code666'
132
+ s2 = SheetOMR.new sh.filename, sh.grid_file
133
+ s2.barcode.should == sh.barcode_int
151
134
  end
152
135
  end
153
136
 
154
137
  end
155
-
156
- context 'a faded, b&w, distorted sheet' do
157
- it 'should return the correct barcode' do
158
- SheetOMR.new('spec/samples/sample03.jpg').barcode.should == 8608
159
- end
160
- end
161
138
 
162
139
  # context "multi-page pdf" do
163
140
  # before(:all) do
@@ -1,59 +1,59 @@
1
- registration:
2
- filename: spec/samples/registration.png
3
- pages: 1
4
- width: 2484
5
- height: 3512
6
- invalid_registration:
7
- filename: spec/samples/invalid_registration.png
8
- pages: 1
9
- width: 2484
10
- height: 3512
1
+ code666:
2
+ filename: spec/samples/sheet666.jpg
3
+ grid-file: spec/samples/layout.yml
4
+ barcode-int: 666666666666
5
+
6
+ silvia:
7
+ filename: spec/samples/qzc013.jpg
8
+ grid-file: spec/samples/layout.yml
9
+
10
+ sample-gray:
11
+ filename: spec/samples/sample_gray.jpg
12
+ grid-file: spec/samples/layout.yml
13
+ width: 1654
14
+ height: 2339
15
+
16
+
11
17
  sample01:
12
18
  filename: spec/samples/sample01.jpg
13
19
  pages: 1
14
20
  width: 2334
15
21
  height: 3291
16
22
 
17
- reg_marks: # registration marks
18
- tl_x: 92
19
- tl_y: 90
20
- tr_x: 2245
21
- tr_y: 97
22
- br_x: 2230
23
- br_y: 3217
24
- bl_x: 78
25
- bl_y: 3205
26
- q_boxes:
23
+ reg-marks: # registration marks
24
+ tl-x: 92
25
+ tl-y: 90
26
+ tr-x: 2245
27
+ tr-y: 97
28
+ br-x: 2230
29
+ br-y: 3217
30
+ bl-x: 78
31
+ bl-y: 3205
32
+ q-boxes:
27
33
  q001:
28
- tl_x: 175
29
- tl_y: 379
34
+ tl-x: 175
35
+ tl-y: 379
30
36
  q160:
31
- tl_x: 1818
32
- tl_y: 2974
33
- bw_faded_sample:
34
- filename: spec/samples/qzc006.jpg
35
- pages: 1
36
- width: 1196
37
- height: 1682
38
- code_int: 5512
37
+ tl-x: 1818
38
+ tl-y: 2974
39
39
 
40
- reg_mark:
40
+ reg-mark:
41
41
  filename: spec/samples/reg_mark.jpg
42
- centroid_x: 92
43
- centroid_y: 91
42
+ centroid-x: 92
43
+ centroid-y: 91
44
44
 
45
45
  small:
46
46
  filename: spec/samples/small.jpg
47
47
 
48
- code_sample:
48
+ code-sample:
49
49
  filename: spec/samples/code_sample.png
50
- code_string: "0000000000000000000000000000000000000000000000000001110001010001"
51
- code_int: 7249
50
+ code-string: "0000000000000000000000000000000000000000000000000001110001010001"
51
+ code-int: 7249
52
52
 
53
- code_zero:
53
+ code-zero:
54
54
  filename: spec/samples/code_zero.png
55
55
 
56
- two_pages:
56
+ two-pages:
57
57
  filename: spec/samples/two_pages.pdf
58
- code_int: 17382938642823887837
58
+ code-int: 17382938642823887837
59
59
 
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file