generated at
ScrapboxページにGyazoのOCRデータを追加する
(2020/3/16)

ScrapboxページにGyazo画像があるときOCRテキストをページに追加する
Scrapboxプロジェクトのデータのエクスポートとインポートは手動でやる
Scrapbox上で画像内の文字列を検索できるようになるので便利
Gyazoのアクセストークンこちらから取得可能

(注) Gyazo PRO のアカウントが必要です


addocr.rb
# # ScrapboxページにGyazoが含まれているときOCRテキストを追加 # # Gyazo APIのためのアクセストークンはあらかじめ取得しておき # .bash_profileなどに書いておく # export GYAZO_TOKEN="0123456..." # アクセストークンは以下から取得 # https://gyazo.com/api?lang=ja # # 手順 # 1. ScrapboxプロジェクトのJSONデータをエクスポートする (origdata.json) # 2. GyazoのOCRテキストをデータに追加する # % ruby addocr.rb origdata.json > newdata.json # 3. 作成されたJSONデータ(newdata.json)をインポートする # # 2020/3/16 Toshiyuki Masui require 'json' require 'gyazo' jsonfile = ARGV[0] unless jsonfile && File.exist?(jsonfile) STDERR.puts "JSON file not found" STDERR.puts "Usage: ruby addocr.rb orig.json > new.json" exit end token = ENV['GYAZO_TOKEN'] gyazo = Gyazo::Client.new access_token: token origdata = JSON.parse(File.read(jsonfile)) newdata = {} newdata['pages'] = [] origdata['pages'].each { |origpage| STDERR.puts origpage['title'] newpage = {} newpage['title'] = origpage['title'] newpage['lines'] = [] gyazoids = [] ocr_done = false origpage['lines'].each { |origline| newpage['lines'] << origline if origline =~ /gyazo\.com\/([0-9a-f]{32})/i gyazoids << $1 end if origline =~ /OCR text/ ocr_done = true end } if gyazoids.length > 0 && !ocr_done newpage['lines'] << "" newpage['lines'] << "(OCR text)" gyazoids.each { |gyazoid| res = gyazo.image image_id: gyazoid if res && res[:ocr] res[:ocr][:description].split(/\n/).each { |ocrline| newpage['lines'] << "> #{ocrline}" } end } newdata['pages'] << newpage end } puts newdata.to_json