Class: Embulk::Filter::GoogleVisionApi
- Inherits:
-
FilterPlugin
- Object
- FilterPlugin
- Embulk::Filter::GoogleVisionApi
- Defined in:
- lib/embulk/filter/google_vision_api.rb,
lib/embulk/filter/google_vision_api/vision_client.rb
Defined Under Namespace
Classes: VisionClient
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.transaction(config, in_schema) {|task, out_columns| ... } ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/embulk/filter/google_vision_api.rb', line 8 def self.transaction(config, in_schema, &control) task = { "out_key_name" => config.param("out_key_name", :string), "image_path_key_name" => config.param("image_path_key_name", :string), "features" => config.param("features", :array), "delay" => config.param("delay", :integer, default: 0), "image_num_per_request" => config.param("image_num_per_request", :integer, default: 16), "google_api_key" => config.param("google_api_key", :string, default: ENV['GOOGLE_API_KEY']), } add_columns = [ Column.new(nil, task["out_key_name"], :json) ] out_columns = in_schema + add_columns yield(task, out_columns) end |
Instance Method Details
#add(page) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/embulk/filter/google_vision_api.rb', line 37 def add(page) record_groups = page.map { |record| Hash[in_schema.names.zip(record)] }.each_slice(@image_num_per_request).to_a record_groups.each do |records| requests = [] images = records.map do |record| record[@image_path_key_name] end response = @client.request(images) records.each_with_index do |record, i| recognized = response.key?("error") ? response : response['responses'][i] Embulk.logger.warn "Error image => [#{record[@image_path_key_name]}] #{recognized}" if response.key?("error") page_builder.add(record.values + [recognized]) end sleep @delay end end |
#close ⇒ Object
34 35 |
# File 'lib/embulk/filter/google_vision_api.rb', line 34 def close end |
#finish ⇒ Object
59 60 61 |
# File 'lib/embulk/filter/google_vision_api.rb', line 59 def finish page_builder.finish end |
#init ⇒ Object
27 28 29 30 31 32 |
# File 'lib/embulk/filter/google_vision_api.rb', line 27 def init @image_path_key_name = task['image_path_key_name'] @delay = task['delay'] @image_num_per_request = task['image_num_per_request'] @client = VisionClient.new(features: task['features'], google_api_key: task['google_api_key']) end |