画像上のテキストにもマーカーを引くオーバーレイ技術
annoを使うと、画像のなかにあるテキストにもマーカーを引ける。
画像は、以下のように幅広い形式のテキストを扱える。
スクリーンショット
ドキュメント
スライド
本
写真
手書きノート
レシート
看板
画像上のテキストにマーカーを引くための、主要技術は以下のとおりである。
OCR (光学文字認識)
画像内のテキストと座標を抽出する。
画像上のテキストにもマーカーを引くオーバーレイ技術は、画像に透明なテキストのDOMを重ねる技術である。
画像内のテキストを選択しているようなUIを表現できる。
以下のように、
position: absolute;
のspan要素を配置している。html
<div
style="position: absolute; user-select: text; left: 91.1198px; top: 126.667px"
>
<span
style="
position: absolute;
color: transparent;
cursor: auto;
overflow: hidden;
white-space: pre;
writing-mode: vertical-rl;
left: 337.449px;
top: 109.729px;
line-height: 10.2184px;
font-size: 10.2184px;
letter-spacing: -3.64792px;
"
>
24時間
</span>
<span
style="
position: absolute;
color: transparent;
cursor: auto;
overflow: hidden;
white-space: pre;
writing-mode: vertical-rl;
left: 339.761px;
top: 123.719px;
line-height: 10.9482px;
font-size: 10.9482px;
letter-spacing: -5.03168px;
"
>
サウナ&
</span>
<br style="visibility: hidden" />
<span
style="
position: absolute;
color: transparent;
cursor: auto;
overflow: hidden;
white-space: pre;
writing-mode: vertical-rl;
left: 341.585px;
top: 139.168px;
line-height: 14.5977px;
font-size: 14.5977px;
letter-spacing: -9.45041px;
"
>
カプセルホテル
</span>
<br style="visibility: hidden" />
...
</div>
あらゆる画像にオーバーレイするため、以下のように作り込んでいる。
横書きと縦書きの両方に対応している。
OCRで得られる矩形の座標データをもとに、矩形が横長か縦長かを判定している。
CSSのwriting-modeを
horizontal-tb
(横書き) または vertical-rl
(縦書き) にセットする。 テキスト選択しやすくするため、テキストを見た目より大きめに補正している。
スマホのような画面が小さいデバイスにて、指でタップしながらテキスト選択することを想定している。
br要素をオーバーレイのDOMに含めて、テキストコピーするときに改行を含めている。