App Store で入手
Anki の使い方 (更新: 2026年8月26日)

教科書の写真から暗記カードを作る——iPhone だけで完結させる手順と、OCR の限界

紙の教科書や問題集を使っていると、カード作成が一気に面倒になります。画面の中のテキストならコピーで済むのに、紙は打ち直すしかない——これはカード作成をやめる十分な理由になります。

写真を撮るだけでカードになれば理想的ですが、実際にやってみると撮ったあとのほうが本番です。この記事では、iPhone だけで写真から文字を取り出す方法、取り出したテキストをカードに割る手順、そして文字認識で何ができて何ができないのかを書きます。

後半は、日本語の文字認識をアプリに組み込んだときに分かったことです。

まず:専用の機能は要りません

暗記アプリの「OCR 機能」を探す前に確認してほしいことがあります。iPhone は標準で写真の文字を読み取れます。

「テキスト認識表示(Live Text)」という機能で、使い方は簡単です。

  1. 写真アプリ(またはカメラのプレビュー)で対象の写真を開く
  2. 文字の部分を長押しする。認識されていれば選択できる状態になる
  3. 範囲を調整してコピー

これで文字列が手に入ります。あとは暗記アプリの一括作成画面に貼り付けるだけです。iOS 標準なので追加費用はなく、どのアプリでも使えます。 AnkiMobile はテキスト/CSV の取り込みに対応しているので、Anki を使っている場合もこの経路が通ります。

正直に書いておくと、アプリ内の OCR ボタンと Live Text は、認識そのものの精度が基本的に同じです。どちらも Apple の端末内の文字認識を使うからです。専用ボタンの価値は精度ではなく手数(アプリを移動しないで済む)だけで、そこは正しく期待してください。

取り出したテキストを、カードに割る

ここからが本題です。文字を取り出しただけではカードになりません。 どこが表でどこが裏かを決める必要があります。

多くの暗記アプリの一括作成は、書式で判断します。私たちのアプリが対応しているのは次の4つで、他のアプリでもだいたい似た方式です。

書式書き方向いている素材
Q/A マーカーQ. 〜 の次の行に A. 〜一問一答形式の問題集
区切り文字表,裏 / 表:裏 のように1行1カード単語リスト・用語集
空行区切り1行目が表、続く行が裏。カード間は空行説明が数行になるもの
CSVカンマ区切り。書き出したファイルの取り込みにも使う表計算で整えた素材

判定は自動です。実装としては4方式すべてで解析してみて、最も多くカード化できた方式を採用しています。ユーザーに「これは Q/A 形式です」と申告させない代わりに、こういう作りにしています。

ただし、OCR 直後のテキストがこの書式になっていることは、まずありません。

(写真から取り出したまま)
第3章 意思表示
1 心裡留保 表意者が真意でないことを知りながら
した意思表示は原則として有効である
2 虚偽表示 相手方と通じてした虚偽の意思表示は
無効である

行が原稿の見た目どおりに切れているので、1つの項目が2行に分かれています。ここを整える一手間が、実は全工程で一番時間がかかります。

現実的なやり方は、取り出したテキストをメモアプリに貼り、区切り文字の形に直してから一括作成に流すことです。上の例なら次のようにします。

心裡留保,真意でないと知りつつした意思表示。原則として有効
虚偽表示,相手方と通じてした虚偽の意思表示。無効

この整形の過程が、そのままカード設計になっています。 面倒に見えますが、ここを飛ばすと後述する失敗をします。

実装して分かった、OCR の現実

① 「日本語対応」と書いてあっても、日本語が拾えないことがある

実装したときに一番時間を取られた問題です。英語は完璧に読めるのに、日本語だけ1文字も返ってこない。

原因はライブラリの既定値でした。Apple の文字認識は認識対象の言語を優先順で指定できるのですが、そのライブラリは言語を指定せずに呼び出していて、既定が英語のみだったのです。ライブラリの説明には日本語対応と書かれていましたが、実際には呼び出し側で ja-JP を明示しないと日本語は返りません。

私たちはライブラリにパッチを当て、認識言語に日本語と英語を指定し、言語補正を有効にすることで解決しました。

利用者としての教訓はこれです。「OCR 対応」と書かれていても、日本語を実際に撮ってみるまで信用できません。 試用時は英語ではなく、自分が使う言語の教材で確かめてください

⚠️ この制約は日本語に限りません。 中国語・韓国語など、指定されていない言語は同じ理由で返ってきません(英語以外の言語で単語帳を自作するときに詰まる4点)。

② 端末の中だけで処理される

Apple の文字認識は端末内で動きます。写真がどこかのサーバーに送られることはなく、通信も課金も発生しません。機内モードでも動きます。

教材の写真は著作物であることが多いので、この点は実務上わりと重要です。

③ 返ってくるのは「行の配列」で、レイアウトは失われる

文字認識の出力はテキストの行の並びです。表組みや2段組は、視覚的な構造を失った状態で返ってきます。

対策は撮り方の側にあります。1段組の範囲だけを写す。見開きではなく片ページずつ。表は撮らずに自分で書く。

④ 縦書きと手書きは弱い

私たちの実装でも、ここは残っている課題です。横書きの印刷物は実用的な精度で読めますが、縦書きの書籍や手書きのノートは期待しないほうがいいというのが実感です。

縦書きの教材が中心なら、写真経由は諦めて手入力するほうが速い場合があります。

⑤ 入口を増やしても、後ろは変えない

設計上の判断も1つ書いておきます。私たちは OCR の出力を「テキスト行の配列」という形に固定しました。

こうしておくと、写真から読み取っても、貼り付けても、ファイルから読み込んでも、後段のカード化処理は同じものが使えます。入力経路が増えるたびにカード化のロジックが枝分かれすると、書式の判定がすぐ壊れます。

同じ理由で、貼り付けからの CSV 取り込みを後から足したときも、既存の判定方式には一切手を入れずに済みました。

一番よくある失敗:教科書を丸ごと取り込む

ここが本題かもしれません。

写真から一気に取り込めるようになると、ページ単位で放り込みたくなります。そして実際にやると、こうなります。

どちらも学習には使えません。取り込みが速くなっても、良いカードにはならないからです。1枚のカードは1つの問いに対応している必要があり、その分割は自分でやるしかありません。

もうひとつの問題は量です。1回の取り込みで200枚作れてしまうと、その200枚は明日以降の復習として必ず戻ってきます間隔反復は「入れた枚数」を将来の復習として必ず返してくる仕組みなので、これは避けられません。1日20枚の投入でも1年後には毎日約290枚になるので、写真経由の一括作成は復習の負債を最速で作る方法でもあります。

現実的な使い方はこうです。

写真は「素材の回収」まで。カード化は別の作業として、後でやる。

移動中に教材を撮っておき、机に向かったときに整形してカードにする。この分け方なら、撮影の手軽さを活かしつつカードの質を落とさずに済みます。

手順のまとめ

どのアプリでも使えるルート

  1. 教材を撮る(1段組の範囲・明るく・なるべく正対して)
  2. 写真アプリで文字を長押し → コピー
  3. メモアプリに貼り、区切り文字の形に整える表,裏
  4. 暗記アプリの一括作成に貼り付けて、プレビューを確認してから取り込む

アプリ内 OCR があるルート

  1. 一括作成画面から「写真から読み取る」を選ぶ
  2. 抽出結果がそのまま入力欄に入るので、その場で整える
  3. プレビューを確認して取り込む

違いは手数だけです。3の整形は、どちらのルートでも必要です。

まとめ


この記事について

このサイトは、暗記アプリ RepeCa の開発元が運営しています。後半は、端末内 OCR を実装したときに実際に踏んだ内容です(認識言語の指定漏れで日本語が返らなかった件、出力を行の配列に固定した設計、縦書き・手書きが弱いという残課題)。

専用の OCR ボタンが無くても、iOS 標準の Live Text でほとんど同じことができます。 私たちも実装している機能ですが、価値は精度ではなく手数なので、そこは正しく書いておきます。同じ理由で、音声入力の専用機能は「OS のキーボードのマイクで足りる」と判断して作りませんでした。

← 暗記のコツの一覧へ