- 技術 💻
Tesseract OCRの使い方|日本語の正答率を前処理とpsmで上げる実測
結論
Tesseract OCR は、画像の中の文字をテキストに変える無料のオープンソースOCRエンジンです。日本語は学習データ jpn(横書き)と jpn_vert(縦書き)を入れて tesseract 画像 stdout -l jpn+eng で読めます。精度は画像しだいで、手元の5枚では前処理と設定だけで正答率が 0% から 98%、73.5% から 100% に上がりました。
この記事でわかること
- インストール・日本語データ・コマンド・pytesseract の手順
- 印刷・スクショ・縦書き・表・写真の5枚の正答率と効いた前処理
- エラー原文14種と、クラウドのOCRとの選び方
Tesseract は、受け取った画像を「どこに文字の行があるか」に分け(レイアウト解析)、行ごとにニューラルネット(LSTM)で文字に変えます。そのときに使う辞書と重みが「学習データ(traineddata)」で、日本語なら jpn を指定します。精度を左右するのは、主に入力の画像と、レイアウト解析のモード(psm)です。
flowchart TD
A[画像<br>PNG・JPEG・TIFF] --> B[前処理<br>拡大・二値化・傾き補正]
B --> C[レイアウト解析<br>--psm で指定]
C --> D[行ごとに認識<br>LSTM(--oem 1)]
L[学習データ<br>jpn・jpn_vert・eng] --> D
D --> E[出力<br>txt・tsv・hocr・pdf]
やりたいことごとに、いちばん早い方法を先にまとめます。
| やりたいこと | いちばん早い方法 | 詳しい節 |
|---|---|---|
| Tesseract を入れたい | Ubuntu は apt install tesseract-ocr tesseract-ocr-jpn、Mac は brew install tesseract tesseract-lang、Windows は UB Mannheim のインストーラー |
Tesseractのインストール |
| 日本語を読みたい | -l jpn+eng。jpn.traineddata を tessdata に置く |
日本語の学習データ |
| 画像の文字をテキストにしたい | tesseract 画像.png stdout -l jpn+eng |
tesseractコマンドの使い方 |
| 精度を上げたい | 小さい文字は2〜3倍に拡大、影のある写真は適応的二値化、傾きを直す、余白を足す | 前処理で精度を上げる |
| 縦書きを読みたい | -l jpn+jpn_vert(jpn_vert.traineddata を入れる) |
縦書きの日本語を読む |
| 表を読みたい | 罫線を消してから --psm 6 |
表を読み取る |
| Python で使いたい | pip install pytesseract → image_to_string() |
pytesseractの使い方 |
| PDF を文字起こししたい | pdftoppm -r 300 -png で画像にしてから読む |
PDFを文字起こしする |
| Failed loading language と出た | --tessdata-dir か TESSDATA_PREFIX で学習データの場所を指定 |
よくあるエラー |
確認環境:Ubuntu 24.04.5 LTS(2 vCPU・メモリ 8GB)で、Ubuntu のパッケージの Tesseract 5.3.4(leptonica 1.82.0)を使いました。日本語の学習データは tesseract-ocr-jpn・tesseract-ocr-jpn-vert・tesseract-ocr-script-jpan(いずれも 4.1.0-2)を apt-get download で取得し、システムに入れずに作業用のフォルダーへ展開して --tessdata-dir で指定しています。見本の画像5枚(印刷文字・スクリーンショット・縦書き・表・傾いた写真)は、架空の文章を Noto CJK フォントで描いて自作しました。Python は 3.13.18、pytesseract 0.3.13 と Pillow 13.0.0 は venv に入れ、前処理は OpenCV 5.0.0(opencv-python-headless)と NumPy 2.5.3 で行いました。PDF の画像化は poppler の pdftoppm 24.02.0 です。時間は OMP_THREAD_LIMIT=1(1スレッド)で5回測った中央値です。Windows・Mac のインストール、tessdata_best・tessdata_fast の違い、最新版の情報、クラウドのOCRの対応言語は、各公式ドキュメントとリリースページで確かめました(tessdata_best の取得はこの環境で許可されなかったため、精度の比較はしていません)。図は mermaid 11.16.0 で描画を確かめています(確認日 2026年10月29日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Tesseract OCRの使い方|日本語の正答率を前処理とpsmで上げる実測」
Tesseract OCRとは(できること・苦手なこと)
この節では、Tesseract OCR が何をするソフトで、どんな画像に向いているかが分かります。
OCR(光学文字認識)は、画像に写った文字を、コピーや検索ができるテキストに変える技術です。Tesseract はその中でも代表的なオープンソースのOCRエンジンです。 公式の README は、Tesseract を「OCRエンジン(libtesseract)とコマンドラインのプログラム(tesseract)」と説明し、100を超える言語を読めること、出力の形式として プレーンテキスト・hOCR(HTML)・PDF・文字だけの透明なPDF・TSV・ALTO・PAGE に対応することを挙げています。
歴史も README に書かれています。もともとは HP(ヒューレット・パッカード)で開発され、2005年に HP がオープンソースにし、2006年から2017年8月まで Google が開発していました。ライセンスは Apache License 2.0 で、商用のシステムにも組み込めます。2026年10月29日時点の最新版は 5.5.4(GitHub のリリースページで10月28日公開、17件のセキュリティの指摘を修正)です。Ubuntu 24.04 の apt で入るのは 5.3.4 でした。
1無料で、手元だけで動く
画像を外部のサービスへ送らずに読める。社外に出せない書類や、大量の画像をまとめて処理するときに向く。
2画面は付いていない
README に「GUI アプリケーションは含まない」とある。コマンドか、Python などのライブラリから使う。
3読めるのは画像だけ
入力は PNG・JPEG・TIFF などの画像。PDF は出力はできるが、入力には使えない(画像にしてから読む)。
苦手なものも先に押さえておきます。公式の「出力の品質を上げる」ページは、表は独自のレイアウト解析が無いと読みにくいこと、傾いたページでは行の切り出しの品質が大きく下がること、暗い背景に明るい文字(白抜き)は 4.x 以降では明るい背景に暗い文字にしてから渡すことを挙げています。手元の5枚でも、何もしないと写真風の画像は1文字も読めず、表は1列目が丸ごと抜けました。この記事の後半で、それぞれをどう直したかを数値で示します。
Tesseractのインストール(Windows・Mac・Ubuntu)
この節では、OS ごとの Tesseract の入れ方と、入ったかどうかの確かめ方が分かります。
Ubuntu・Debian は apt、Mac は Homebrew、Windows は UB Mannheim(マンハイム大学図書館)が配布しているインストーラーで入れるのが、公式のインストール手順に載っている方法です。 日本語は本体とは別のパッケージ(学習データ)なので、一緒に入れます。
| OS | 本体 | 日本語の学習データ | 確かめた範囲 |
|---|---|---|---|
| Ubuntu・Debian | sudo apt install tesseract-ocr |
tesseract-ocr-jpn・tesseract-ocr-jpn-vert |
この環境で .deb を取得・展開して実行 |
| Mac | brew install tesseract |
brew install tesseract-lang(追加の言語をまとめて入れる) |
公式の手順と Homebrew の formula のページ |
| Windows | UB Mannheim の wiki からインストーラー(2026年10月29日時点の掲載は 5.5.3) | tessdata フォルダーに jpn.traineddata を置く | 公式の手順と UB Mannheim の wiki |
本体と日本語データを入れる
Ubuntu なら sudo apt install tesseract-ocr tesseract-ocr-jpn tesseract-ocr-jpn-vert。Mac なら brew install tesseract tesseract-lang。
Windows はインストーラーと PATH
UB Mannheim の wiki からインストーラーを入れ、公式の手順のとおり、入れた場所(多くは C:\Program Files\Tesseract-OCR)を PATH に足す。日本語は tessdata フォルダーに jpn.traineddata を置く。
版と言語を確かめる
tesseract --version と tesseract --list-langs。一覧に jpn が出れば日本語を読める。
手元の Ubuntu で確かめた出力です(本体は入っていて、日本語のデータはまだ無い状態)。
$ tesseract --version
tesseract 5.3.4
leptonica-1.82.0
libgif 5.2.1 : libjpeg 8d (libjpeg-turbo 2.1.5) : libpng 1.6.43 : libtiff 4.5.1 : zlib 1.3 : libwebp 1.3.2 : libopenjp2 2.5.0
Found AVX512BW
...
$ tesseract --list-langs
List of available languages in "/usr/share/tesseract-ocr/5/tessdata/" (2):
eng
osd
2行目以降の libgif・libjpeg・libpng・libtiff・libwebp・libopenjp2 が、読める画像の形式です。 この一覧に無い形式(たとえば iPhone の写真の HEIC)は、JPG や PNG に変換してから渡します。WebP は一覧にあり、手元でも PNG と同じ文字が読めました。
管理者の権限が無いとき(.deb を展開して使う)
共用のサーバーなどで apt install ができないときは、学習データの .deb を取得して展開し、その場所を指定する方法があります。この記事の確認はこの方法で行いました。
$ apt-get download tesseract-ocr-jpn tesseract-ocr-jpn-vert tesseract-ocr-script-jpan
$ for f in *.deb; do dpkg-deb -x "$f" x; done
$ T=/dev/shm/t157/tessdata
$ mkdir -p $T && cp x/usr/share/tesseract-ocr/5/tessdata/*.traineddata $T/
$ cp /usr/share/tesseract-ocr/5/tessdata/{eng,osd}.traineddata $T/
$ tesseract --list-langs --tessdata-dir $T
List of available languages in "/dev/shm/t157/tessdata/" (5):
Japanese
eng
jpn
jpn_vert
osd
学習データのフォルダーを指定するときは、英語(eng)と向きの判定(osd)のデータも同じフォルダーに置きます。指定したフォルダーだけが探されるためです。
日本語の学習データ(jpn・jpn_vert)を入れる
この節では、日本語を読むための学習データの種類と、置き場所の指定のしかたが分かります。
横書きは jpn、縦書きは jpn_vert を使います。 Ubuntu には、ほかに日本語の文字体系(スクリプト)全体を学習した Japanese(パッケージ名は tesseract-ocr-script-jpan)もあります。展開して大きさを確かめました。
| 学習データ | 用途 | 大きさ(手元) | 指定のしかた |
|---|---|---|---|
| jpn | 日本語の横書き | 2.5MB | -l jpn |
| jpn_vert | 日本語の縦書き | 3.0MB | -l jpn_vert |
| Japanese | 日本語の文字体系(スクリプト)のモデル | 5.9MB | -l Japanese(置き場所によっては script/Japanese) |
| eng | 英語。日本語の文書の英数字に足す | 4.1MB | -l jpn+eng |
| osd | 向き(0・90・180・270度)と文字体系の判定 | 10.6MB | --psm 0 などで自動で使う |
4つの見本(前処理のあと)と印刷文字で、学習データの違いによる正答率を比べました。正答率の出し方は次の節で説明します。
| 見本 | jpn | jpn+eng | Japanese |
|---|---|---|---|
| 印刷文字 | 99.3% | 99.3% | 100% |
| スクリーンショット(3倍+余白) | 98.8% | 100% | 100% |
| 表(罫線を消す・psm 6) | 94.1% | 100% | 100% |
| 写真(傾き補正+適応的二値化) | 98.0% | 98.0% | 98.0% |
jpn だけだと、英字と数字の多い行で取りこぼしが出て、eng を足すと直りました。 表の「1,980」は jpn だけでは「1.980」になり、jpn+eng と Japanese では正しく読めました。日本語の文書でも、英数字が混ざるなら jpn+eng を基本にするのが手元の結果からの結論です。
tessdata・tessdata_fast・tessdata_best の違い
学習データには3つの系統があります。公式の Data Files のページの説明を表にしました。
| 系統 | 中身 | 速さと精度 | legacy(--oem 0) |
|---|---|---|---|
| tessdata_fast | 小さなネットワークの整数化した LSTM | 最も速く、精度は最も低い。Linux の配布物に入るのはこれ | 使えない |
| tessdata_best | LSTM のみ(浮動小数点) | 最も遅く、最も正確。追加学習の土台に使えるのはこれだけ | 使えない |
| tessdata | legacy と LSTM の両方 | best より速く、少しだけ精度が下がる | 使える |
Ubuntu の tesseract-ocr-jpn の中身を combine_tessdata -d で見ると、LSTM の部品だけが入っていました。legacy のエンジンを指定する --oem 0 がエラーになるのはこのためです(エラーの節に原文があります)。
$ combine_tessdata -d $T/jpn.traineddata
Version:4.00.00alpha:jpn:synth20170629:[1,36,0,1Ct3,3,16Mp3,3Lfys64Lfx96Lrx96Lfx384O1c1]
0:config:size=89, offset=192
17:lstm:size=1080340, offset=281
18:lstm-punc-dawg:size=2602, offset=1080621
19:lstm-word-dawg:size=1167978, offset=1083223
20:lstm-number-dawg:size=50, offset=2251201
21:lstm-unicharset:size=173324, offset=2251251
22:lstm-recoder:size=46601, offset=2424575
23:version:size=80, offset=2471176
学習データの置き場所を指定する
Tesseract は、決まったフォルダー(Ubuntu の 5.x なら /usr/share/tesseract-ocr/5/tessdata/)から学習データを探します。別の場所に置いたときは、次のどちらかで指定します。
- コマンドの引数:
--tessdata-dir /path/to/tessdata(その実行だけ) - 環境変数:
TESSDATA_PREFIX=/path/to/tessdata(同じシェルの実行すべて)
どちらも、traineddata ファイルが直接入っているフォルダーを指定します。手元では両方で --list-langs に jpn が出て、読み取りもできました。以降のコマンドの例では、この指定を省いて書いています。
tesseractコマンドの基本的な使い方
この節では、tesseract コマンドの書き方、主なオプション、出力の形式の切り替えが分かります。
書き方は tesseract 入力画像 出力名 [オプション] [出力形式] です。 出力名に stdout と書くと画面に表示し、それ以外は「出力名.txt」のように拡張子が付いたファイルに保存します。
$ tesseract print.png stdout -l jpn+eng
Detected 42 diacritics
OCRの見本文書 (第2版)
光学文字認識は、画像の中の文字を読み取り、
テキストとして扱える形に変える技術です。
受付番号 : A-2048 日付 :2026年10月29日
価格は1.980円 (税込) 、数量は12個です。
English words and 0123456789 also appear.
1行目の Detected 42 diacritics は、処理の途中の情報で、エラーではありません。結果のテキストは標準出力、こうした情報は標準エラー出力に出るので、2>/dev/null で消せます。
| オプション | 意味 | 例 |
|---|---|---|
-l |
学習データ(言語)。+ でつなぐと複数 |
-l jpn+eng |
--psm |
ページの分け方(レイアウト解析)。0〜13 | --psm 6 |
--oem |
使う認識エンジン。0〜3 | --oem 1 |
--dpi |
画像の解像度を伝える | --dpi 300 |
--tessdata-dir |
学習データのフォルダー | --tessdata-dir ~/tessdata |
-c 名前=値 |
細かい設定を変える | -c preserve_interword_spaces=1 |
--list-langs |
使える学習データの一覧 | tesseract --list-langs |
--help-psm・--help-oem |
psm・oem の一覧を表示 | tesseract --help-psm |
出力の形式(txt・tsv・hocr・pdf)
出力名のあとに形式を並べると、1回の実行で複数の形式を保存できます。
$ tesseract page-1.png out1 -l jpn+eng txt tsv hocr
$ ls out1*
out1.hocr out1.tsv out1.txt
$ head -4 out1.tsv
level page_num block_num par_num line_num word_num left top width height conf text
1 1 0 0 0 0 0 0 2000 560 -1
2 1 1 0 0 0 81 65 952 442 -1
3 1 1 1 0 0 83 65 507 43 -1
- txt:テキストだけ。いちばんよく使う。
- tsv:単語ごとの位置(left・top・width・height)と信頼度(conf)。表の列を分けるときや、自信の無い単語を探すときに使う。conf が -1 の行は単語ではなく、ページ・段落・行のまとまりを表す。
- hocr:位置つきの HTML。
bbox 83 65 408 108; x_wconf 96のように単語ごとの座標と信頼度が入る。 - pdf:画像の上に透明な文字を重ねた、検索できる PDF(PDF の節で扱います)。
複数の画像をまとめて読む
シェルのループで1枚ずつ読むか、画像のパスを1行に1つ書いたテキストファイルを入力にします。テキストファイルを渡すと、全ページが1つの出力にまとまります。
$ for f in *.png; do tesseract "$f" "${f%.png}" -l jpn+eng; done
$ printf 'print.png\npage-2.png\n' > list.txt
$ tesseract list.txt multi -l jpn+eng
Page 1 : print.png
Page 2 : page-2.png
5種類の画像を読み取った結果(正答率の表)
この節では、性質の違う5枚の画像を何もせずに読ませたときと、手を打ったあとの正答率が分かります。
見本は、架空の文章を描いて作った次の5枚です。
- 印刷文字:明朝体・46px(300dpi で約11pt)の6行。日本語・英語・数字・全角の記号が混ざる。
- スクリーンショット:設定画面を模した 96dpi・13px のゴシック体。灰色や色つきの文字、青い帯に白抜きの見出し。
- 縦書き:明朝体の4列。漢数字の「二〇二六」と長音の「ー」を含む。
- 表:罫線つきの4列×5行。品名・数量・単価・金額。
- 写真:6度傾け、左側に影、ぼかし、ノイズ、半分に縮小、JPEG の画質55で保存。
正答率は「1 −(読み取り結果と正解の編集距離 ÷ 正解の文字数)」で出しました。 編集距離は、1文字の追加・削除・置き換えを1回と数えたときに、結果を正解にそろえるのに要る回数です。全角・半角の違いは NFKC で正規化してそろえ、空白と改行は数えていません。
| 見本 | 何もしない(jpn) | いちばん良かった設定 | 正答率 |
|---|---|---|---|
| 印刷文字(138字) | 99.3% | -l Japanese | 100% |
| スクリーンショット(83字) | 85.5% | グレー+3倍+余白、-l jpn+eng | 100% |
| 縦書き(56字) | 0% | -l jpn+jpn_vert | 100% |
| 表(68字) | 73.5% | 罫線を消す、--psm 6、-l jpn+eng | 100% |
| 写真(50字) | 0% | 傾き補正+適応的二値化、-l jpn+eng | 98.0% |
何もしないときの失敗のしかたは、画像ごとに違いました。
- 写真:何も出力されず、終了コードは 0 でした。エラーにならないので、空の結果を見落とさないよう、プログラムでは文字数を確かめます。
- 縦書き:jpn では「罰和%%ぐ租め方玲選尽8"」のような、意味の無い文字列になりました。
- 表:数量・単価・金額は読めたのに、1列目(品名・ノートPC・マウス・モニター・合計)がすべて抜けました。
- スクリーンショット:青い帯の白抜きの見出しが抜け、「file not found」が「fle notfound」になりました。
- 印刷文字:誤りは「1,980」が「1.980」になった1か所だけでした。
時間は、印刷文字1枚(2000×560px)を jpn で読んで 0.32秒、jpn+eng で 0.59秒でした。学習データを足すと、そのぶん時間が延びます。2スレッドにしても 0.36秒で、この大きさの画像では速くなりませんでした。
前処理で精度を上げる(グレースケール・二値化・拡大・傾き補正)
この節では、OCR の前に画像をどう整えると精度が上がるかと、逆に下がる処理が分かります。
効いた処理は画像の性質で違い、写真には「傾き補正+適応的二値化」、小さな画面の文字には「拡大+余白」が効きました。 写真で試した組み合わせの結果です(言語は jpn+eng)。
| 写真に行った処理 | 正答率 | メモ |
|---|---|---|
| そのまま | 0% | 出力が空 |
| グレースケール | 0% | 変わらない |
| グレー+大津の二値化 | 0% | 影の部分が真っ黒になる |
| グレー+適応的二値化 | 96.0% | 「:」「〜」などで2字の誤り |
| グレー+2倍+適応的二値化 | 66.0% | 拡大で文字が太くなり、二値化の窓と合わない |
| グレー+傾き補正(5.99度)+適応的二値化 | 98.0% | 残りは「〜」が「~」になった1字 |
スクリーンショットは、文字の小ささが原因でした。13px の文字を拡大すると見出しも読めるようになり、さらに上下左右に20pxの余白を足すと100%になりました。見出しの青い帯が画像の端に接していたためで、公式のページも、文字が端に接している画像には10px程度の余白を足すよう勧めています。
| スクリーンショットに行った処理 | jpn | jpn+eng |
|---|---|---|
| グレースケール | 85.5% | 86.7% |
| グレー+2倍 | 96.4% | 98.8% |
| グレー+3倍 | 96.4% | 95.2% |
| グレー+3倍+大津の二値化 | 96.4% | 96.4% |
| グレー+3倍+余白20px | 98.8% | 100% |
手を打つ順番を、手元の結果と公式の説明からまとめました。上から順に試し、結果が良くなったところで止めます。
- 1言語を合わせる(jpn+eng・縦書きは jpn_vert)いちばん手軽で、効き目が大きい
- 2psm を画像の形に合わせる1行なら 7、表なら 6、ばらばらなら 11
- 3小さい文字を2〜3倍に拡大し、余白を足す画面のスクリーンショット・小さな画像
- 4傾きを直す写真・スキャンの斜め。公式も行の切り出しが大きく劣化すると説明
- 5影やむらは適応的二値化画像全体で1つのしきい値を使う大津の方法は、影があると失敗した
- 6罫線・地紋を消す表・帳票。線が文字として拾われる
影のある写真の二値化
二値化の窓の大きさ(ここでは31px)は文字の大きさに合わせる。拡大したあと同じ窓のままだと 66.0% に下がった
前処理のコード(OpenCV)
手元で使った前処理の関数です。傾きは、文字の画素を囲む最小の傾いた長方形(cv2.minAreaRect)の角度から求めています。
import cv2
import numpy as np
def preprocess(path, scale=1, binarize=True, deskew=True, pad=20):
img = cv2.imread(path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
if scale != 1:
gray = cv2.resize(gray, None, fx=scale, fy=scale, interpolation=cv2.INTER_CUBIC)
if deskew:
mask = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY_INV, 31, 15)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, np.ones((2, 2), np.uint8))
pts = np.column_stack(np.where(mask > 0))[:, ::-1].astype(np.float32)
angle = cv2.minAreaRect(pts)[-1]
angle = (angle + 45) % 90 - 45 # -45〜45度にそろえる
h, w = gray.shape
m = cv2.getRotationMatrix2D((w / 2, h / 2), angle, 1.0)
gray = cv2.warpAffine(gray, m, (w, h), flags=cv2.INTER_CUBIC,
borderMode=cv2.BORDER_REPLICATE)
print(f'傾き補正: {angle:.2f}度')
if binarize:
gray = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 31, 15)
return cv2.copyMakeBorder(gray, pad, pad, pad, pad, cv2.BORDER_REPLICATE)
最初は、大津の二値化で文字の画素を取ってから角度を求めていました。すると影の部分も「文字」と判定され、角度が -90.00度と出て、補正した画像の正答率は 56.0% に下がりました。傾きを測る前の文字の取り出しも、影に強い適応的二値化にすると 5.99度と出て、作ったときの6度とほぼ一致しました。
画像の拡大・切り抜き・形式の変換を Pillow で行う方法は、関連記事「Python Pillowで画像処理|リサイズ・トリミング・形式変換のコード集」で扱っています。
白抜き文字と透明な背景
公式のページは、4.x 以降では「明るい背景に暗い文字」で渡すよう勧め、透明(アルファチャンネル)は白い背景と合成されると説明しています。透明な背景の PNG で確かめると、黒い文字は読め、白い文字は白い背景に溶けて読めませんでした。
[透明な背景に黒い文字] 透明な背景の文字 OCR 2026
[透明な背景に白い文字] sO = OCR 2026
[暗い色の背景と合成] 透明な背景の文字 OCR 2026
アイコンや字幕のように透明な画像は、暗い色の背景と合成するか、白黒を反転してから渡します。
psmとoemの違い(ページ分割モードとエンジン)
この節では、--psm と --oem が何を切り替えるのかと、値ごとの結果の違いが分かります。
psm(Page Segmentation Mode)は「画像をどう区切って読むか」、oem(OCR Engine Mode)は「どの認識エンジンを使うか」です。 精度に効くのは主に psm で、oem は学習データに合わせて選ぶだけで済みます。tesseract --help-psm の一覧を訳し、手元の結果を並べました。
| psm | 意味 | 印刷文字 | 表(そのまま) | 表(罫線を消す) |
|---|---|---|---|---|
| 0 | 向きと文字体系の判定だけ(OSD) | ― | ― | ― |
| 1 | 自動の分割+OSD | 99.3% | ― | ― |
| 3 | 自動の分割(既定) | 99.3% | 73.5% | 39.7% |
| 4 | 大きさの違う文字が1段に並ぶ | 99.3% | 73.5% | 42.6% |
| 5 | 縦にそろった1つのかたまり | ― | ― | ― |
| 6 | そろった1つのかたまり | 99.3% | 1.5% | 94.1% |
| 7 | 1行として読む | 0.7% | ― | ― |
| 8・9・10 | 1単語・円の中の1単語・1文字 | ― | ― | ― |
| 11 | まばらな文字。順番を問わずできるだけ拾う | 97.1% | 83.8% | 83.8% |
| 12 | まばらな文字+OSD | 98.6% | 75.0% | ― |
| 13 | 1行として、Tesseract 固有の補正をせずに読む | 0.0% | ― | ― |
表の列の数値は言語 jpn のときです(罫線を消して psm 6 のまま jpn+eng にすると 100%)。2 は「実装されていない」と一覧に書かれています。
- 文書1ページなら既定の 3 のままでよく、1・4・6 も同じ結果でした。1 は向きの判定が加わるぶん 0.59秒と、3 の 0.32秒より遅くなりました。
- 7 は1行の画像に使うモードです。6行ある画像に使うと「B和3」のような1行になりました。1行だけを切り抜いた画像なら、7 で「OCRの見本文書 (第2版)」と正しく読めました。
- 表は 6 が効くのは罫線を消したときだけで、罫線が残ったままの 6 は 1.5% でした。
psm 0 で向きを判定する
90度回した印刷文字を --psm 0(pytesseract では image_to_osd)にかけると、向きと文字体系が返りました。
Page number: 0
Orientation in degrees: 270
Rotate: 90
Orientation confidence: 16.36
Script: Japanese
Script confidence: 0.46
Rotate: 90 は「時計回りに90度回すと正しい向きになる」という意味です。判定できるのは 0・90・180・270度の4方向だけで、写真の6度のような小さな傾きは前の節の方法で直します。文字が少ない画像では Too few characters. Skipping this page と出て判定されませんでした。
oem(エンジン)の選び方
| oem | 意味 | 手元の結果(Ubuntu の jpn) |
|---|---|---|
| 0 | legacy(以前の方式)のエンジンだけ | エラー(学習データに legacy の部品が無い) |
| 1 | LSTM のエンジンだけ | 99.3% |
| 2 | legacy+LSTM | legacy の部品が要る |
| 3 | 使えるものに合わせて自動(既定) | 99.3%(1 と同じ) |
迷ったら --oem は付けず、既定の 3 に任せます。 tessdata_fast・tessdata_best の学習データでは 0 と 2 は使えないと、公式の Data Files のページに書かれています。
縦書きの日本語を読む(jpn_vert)
この節では、縦書きの日本語を読むための学習データの指定と、出力の違いが分かります。
縦書きは jpn_vert を使い、jpn と組み合わせて -l jpn+jpn_vert にすると、語の間に空白が入らない形で読めました。
| 指定 | 正答率 | 出力の特徴 | 時間 |
|---|---|---|---|
| -l jpn | 0% | 意味の無い文字列 | 0.28秒 |
| -l Japanese | 0% | 意味の無い文字列 | 0.45秒 |
| -l jpn_vert | 100% | 語の間に空白が入る | 0.29秒 |
| -l jpn_vert --psm 5 | 98.2% | 「縦」を「終」と読んだ | 0.26秒 |
| -l jpn_vert -c preserve_interword_spaces=1 | 100% | 空白なし | 0.27秒 |
| -l jpn+jpn_vert | 100% | 空白なし | 0.54秒 |
$ tesseract vertical.png stdout -l jpn_vert
縦 書 き の 文章 も 読み 取れ ます 。
列 は 右 か ら 左 へ 進み ます 。
数 字 は 二 〇 二 六 年 と 書き ます 。
学習 デー タ は 縦 書 き 用 を 使い ます 。
$ tesseract vertical.png stdout -l jpn+jpn_vert
縦書きの文章も読み取れます。
列は右から左へ進みます。
数字は二〇二六年と書きます。
学習データは縦書き用を使います。
時間は jpn_vert と jpn+jpn_vert が5回の中央値、ほかは1回の値です。
-l jpn_vert + preserve_interword_spaces=1
速い(0.27秒)
設定を付けないと語の間に空白が入る
縦書きだけと分かっている画像に向く
-l jpn+jpn_vert
約2倍の時間(0.54秒)
空白の無い、そのまま使える文になった
縦書きと横書きが混ざる紙面にも使える
右の列から左の列へ、正しい順番で出力されました。縦書きの「ー」(長音)も「デー タ」のように読めています。jpn_vert だけで読むときに入る空白は、-c preserve_interword_spaces=1(単語の間の空白を詰め直さない設定)を付けると消え、全56字がそのまま正しく出ました。
表を読み取る(罫線を消してから読む)
この節では、罫線のある表で列が抜ける原因と、罫線を消して読む方法が分かります。
罫線つきの表をそのまま読むと、1列目がすべて抜けました。TSV で見ると、横の罫線が「文字の無い単語」として拾われていました。
$ tesseract table.png stdout -l jpn tsv | awk -F'\t' '$12!=""' | head -6
level page_num block_num par_num line_num word_num left top width height conf text
5 1 1 1 1 1 40 39 1101 5 95.000000
5 1 2 1 1 1 40 117 1101 7 95.000000
5 1 3 1 1 1 40 197 1101 7 95.000000
5 1 5 1 1 1 542 70 36 36 92.762482 量
5 1 5 1 1 2 762 69 76 38 94.077866 単価
幅 1101px・高さ 5〜7px の「単語」が罫線です。そこで、OpenCV で横に長い線と縦に長い線を取り出し、白で塗ってから読みました。
def remove_lines(gray):
th = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
h_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (60, 1)) # 横60px以上の線
v_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 60)) # 縦60px以上の線
lines = (cv2.morphologyEx(th, cv2.MORPH_OPEN, h_kernel)
| cv2.morphologyEx(th, cv2.MORPH_OPEN, v_kernel))
lines = cv2.dilate(lines, np.ones((3, 3), np.uint8))
out = gray.copy()
out[lines > 0] = 255
return out
$ tesseract table_nolines.png stdout -l jpn+eng --psm 6
品名 数量 単価 金額
ノートPC 2 128,000 256,000
マウス 5 1,980 9,900
モニター 1 32,800 32,800
合計 298,700
罫線を消して --psm 6・-l jpn+eng にすると、全68字が正しく読めました。列の間の空白が残っているので、空白2つ以上で区切れば列に分けられます。Tesseract は表の構造(どのセルに何があるか)を返さないので、セルとして扱いたいときは TSV の left(左端の座標)で列を判定するか、列ごとに切り抜いて読みます。
数字だけの列を読むとき
jpn だけで読んだときの「1.980」(正しくは 1,980)を、単価の列だけ切り抜いて直せるか試しました。
$ tesseract price.png stdout -l jpn --psm 6
128,000
1.980
32,800
$ tesseract price.png stdout -l jpn --psm 6 -c tessedit_char_whitelist=0123456789,
128,000
1980
32,800
$ tesseract price.png stdout -l eng --psm 6
128,000
1,980
32,800
使う文字を数字とカンマに限る tessedit_char_whitelist では、ピリオドが消えて「1980」になり、カンマにはなりませんでした。数字の列は、文字を限るより eng で読むほうが正確でした。 金額のように誤りが許されない値は、次の節の信頼度で人が見直す仕組みと組み合わせます。
PythonでOCRする(pytesseractの使い方)
この節では、Python から Tesseract を呼ぶ pytesseract の入れ方、主な関数、信頼度の低い単語の拾い方が分かります。
pytesseract は、tesseract コマンドを Python から呼び出すためのライブラリです。Tesseract 本体は別に入れておきます。 PyPI のページによると、2026年10月29日時点の最新版は 0.3.13(2024年8月16日公開)で、Pillow を使います。
$ python3 -m venv venv
$ venv/bin/pip install pytesseract
Successfully installed Pillow-13.0.0 packaging-26.3 pytesseract-0.3.13
仮想環境の作り方と有効化は、関連記事「Python venvの使い方|作成・有効化コマンド早見表と有効化できない時の直し方」で扱っています。
import pytesseract
from pytesseract import Output
from PIL import Image
print(pytesseract.get_tesseract_version())
print(pytesseract.get_languages(config=''))
img = Image.open('print.png')
text = pytesseract.image_to_string(img, lang='jpn+eng')
print(text.splitlines()[:3])
# 単語ごとの位置と信頼度
d = pytesseract.image_to_data(img, lang='jpn+eng', output_type=Output.DICT)
words = [(d['text'][i], float(d['conf'][i])) for i in range(len(d['text']))
if d['text'][i].strip()]
print(len(words), sorted(words, key=lambda w: w[1])[:3])
5.3.4
['eng', 'jpn', 'jpn_vert', 'osd']
['OCRの見本文書 (第2版)', '', '光学文字認識は、画像の中の文字を読み取り、']
72 [('1.980', 60.0), (':', 69.0), ('付', 72.0)]
手元では学習データを作業用のフォルダーに置いたので、環境変数 TESSDATA_PREFIX で場所を指定して、このコードをそのまま実行しました。信頼度(conf)がいちばん低かった単語は、ちょうど誤読した「1.980」(60)でした。 金額や番号を扱うなら、信頼度が一定より低い単語を一覧にして人が確かめる流れが組めます。ただし、正しく読めた単語にも 69〜75 のものがあり、信頼度だけで誤りを確実に見分けられるわけではありません。
| 関数 | 返すもの | 使う場面 |
|---|---|---|
image_to_string |
テキスト | まず文字を取り出す |
image_to_data |
単語ごとの位置・信頼度(TSV と同じ12項目) | 表の列分け・要確認の単語 |
image_to_boxes |
1文字ごとの枠 | 文字の位置に印を付ける |
image_to_osd |
向き・文字体系 | 90度単位の回転を直す |
image_to_pdf_or_hocr |
検索できる PDF か hOCR(bytes) | PDF を作る |
image_to_alto_xml |
ALTO XML | 図書館などの電子化 |
get_languages・get_tesseract_version |
使える言語・版 | 環境の確認 |
引数の config には、コマンドと同じオプションを文字列で渡します(例:config='--psm 6 --tessdata-dir /path/to/tessdata')。timeout=秒 を付けると、時間を超えたときに RuntimeError: Tesseract process timeout で止まりました。Windows で PATH を通していないときは、PyPI のページの例のように pytesseract.pytesseract.tesseract_cmd に tesseract.exe の場所を書きます。
前処理からOCRまでをまとめたコード
前の節の preprocess と組み合わせ、テキストと要確認の単語を返す関数です。
import pytesseract
from pytesseract import Output
CONFIG = '--psm 3'
def ocr(image, lang='jpn+eng', min_conf=70):
text = pytesseract.image_to_string(image, lang=lang, config=CONFIG)
d = pytesseract.image_to_data(image, lang=lang, config=CONFIG,
output_type=Output.DICT)
low = [(w, round(float(c))) for w, c in zip(d['text'], d['conf'])
if w.strip() and float(c) < min_conf]
return text.strip(), low
text, low = ocr(preprocess('photo.jpg', binarize=True, deskew=True))
print(text)
print('要確認:', low)
傾き補正: -5.99度
会議室の予約は前日までに
受付で名簿に記入します。
問い合わせ : 内線 3104
利用時間 9:00~18:00
要確認: []
スクリーンショットは preprocess('screen.png', scale=3, binarize=False, deskew=False) で、見出しまで含めて全行が読めました。画面の画像に傾き補正をかけると、見出しの帯が少し回転して読めなくなったので、写真やスキャンにだけ使います。
PDFを文字起こしする(画像にしてから読む)
この節では、スキャンした PDF を Tesseract で読む手順と、検索できる PDF の作り方が分かります。
Tesseract は PDF を直接読めません。PDF のページを画像にしてから読みます。 README も、入力の画像を開く Leptonica は「pdf のような文書は開かない」と説明しています。そのまま渡したときのエラーです。
$ tesseract scan.pdf stdout -l jpn
Error in pixReadStream: Pdf reading is not supported
Error in pixRead: pix not read
Error during processing.
文字が入っているか確かめる
pdftotext scan.pdf - で文字が出るなら、OCR は要らない。見本の2ページの PDF は2バイト(改ページだけ)で、画像だけの PDF だった。
ページを画像にする
pdftoppm -r 300 -png scan.pdf page で page-1.png・page-2.png ができる。公式は 300dpi 以上を勧めている。2ページで 0.16秒だった。
1ページずつ読む
tesseract page-1.png page-1 -l jpn+eng。ページ数が多いときは画像の一覧をテキストファイルにして1回で読む。
検索できる PDF にする
出力の形式に pdf を付けると、画像の上に透明な文字を重ねた PDF ができる。
$ tesseract page-1.png searchable -l jpn+eng pdf
$ pdffonts searchable.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
GlyphLessFont CID TrueType Identity-H yes no yes 3 0
$ pdftotext searchable.pdf - | head -3
OCR
の 見 本 文書 (第
2版)
できた PDF には、形の無い文字だけのフォント(GlyphLessFont)で文字が重ねてあり、見た目は元の画像のまま、選択や検索ができます。ただし、取り出した文字は「の 見 本 文書」のように語の間に空白が入りました。-c preserve_interword_spaces=1 を付けて作り直しても同じでした。 PDF ビューアーで「見本文書」と検索したときに当たらない場合があるので、検索の用途では、別に保存した txt を使うか、空白を消したテキストを索引に入れます。
Python では pdf2image(内部で pdftoppm を使う)で PDF をページの画像にし、それを pytesseract に渡します。pytesseract に PDF のパスを渡すと、コマンドと同じ Pdf reading is not supported の TesseractError になりました。次のコードを見本の PDF で実行すると、1ページ目は「日付」が「AN」になった1か所を除いて読めましたが、2ページ目の表は罫線が残ったままなので崩れました。ページの中身に合わせて、前の節の前処理を挟みます。
from pdf2image import convert_from_path
import pytesseract
pages = convert_from_path('scan.pdf', dpi=300)
for i, page in enumerate(pages, 1):
print(f'--- {i}ページ')
print(pytesseract.image_to_string(page, lang='jpn+eng'))
Tesseractと他のOCRの選び方(判断表)
この節では、Tesseract とクラウドのOCRサービスのどちらを選ぶかの判断の目安が分かります。
社外に出せない画像や、大量の画像を費用をかけずに読むなら Tesseract、手書きや崩れたレイアウトが多く精度を優先するならクラウドのOCRを検討します。 クラウドのサービスは手元で動かしていないので、日本語への対応は各社の公式ドキュメントの記載だけを並べます(2026年10月29日時点)。
| 選択肢 | 動く場所 | 日本語(公式の記載) | 向いている場面 |
|---|---|---|---|
| Tesseract | 手元の PC・サーバー | jpn・jpn_vert の学習データ | 社外秘の書類、大量の印刷文字、オフライン |
| Google Cloud Vision API | Google Cloud | 対応言語の一覧に日本語(ja) | 写真・看板など画像の中の文字 |
| Azure AI Document Intelligence(Read) | Microsoft Azure | 印刷テキストの一覧に日本語(ja) | 帳票・文書のレイアウトごと取り出す |
| Amazon Textract | AWS | 対応は英語・スペイン語・ドイツ語・イタリア語・フランス語・ポルトガル語の6言語で、日本語は一覧に無い | 英語などの帳票 |
| こんなとき | 選ぶもの | 理由 |
|---|---|---|
| 社外に出せない書類 | Tesseract | 画像が手元から出ない |
| きれいな印刷文字・画面の文字 | Tesseract+前処理 | 手元で 98〜100% まで上がった |
| 縦書き | Tesseract(jpn+jpn_vert) | 手元で 100% |
| 手書き・崩れた写真が多い | クラウドのOCRも並べて試す | 手元では試していない。見本で正答率を比べて決める |
| 帳票の項目を構造ごと取り出したい | 文書向けのクラウドのサービス | Tesseract は表の構造を返さない |
| 件数が少なく、一度きり | 手元の OS やアプリの文字認識 | 環境を作る手間が要らない |
選ぶ前に、次の点を確かめておくと、あとで作り直さずに済みます。
- 1画像を社外のサービスに送ってよいか個人情報・契約書・社内資料は、送れない前提で考える
- 2見本を10枚ほど集めて正答率を測ったかこの記事の編集距離の方法なら、数十行の Python で測れる
- 3縦書き・表・手書きが含まれるか含まれるなら、それぞれ別の設定や手段が要る
- 4誤りを人が見直す流れがあるか金額・番号は信頼度の低い単語を確認に回す
- 5使う版が新しいか5.5.4 は17件のセキュリティの指摘を修正。外から受け取る画像を読むなら版を上げる
読み取ったテキストを社内の文書検索や生成AIの回答に使う流れは、関連記事「RAGの作り方|Pythonで動かす最小構成と精度の上げ方」で扱っています。
よくあるエラーと直し方(Tesseract・pytesseract)
この節では、手元で実際に出たエラーと注意の文言の原文と、それぞれの直し方が分かります。
| 出た文言(原文) | 原因 | 直し方 |
|---|---|---|
Error opening data file …/tessdata/jpn.traineddataFailed loading language 'jpn' |
jpn の学習データが探した場所に無い | tesseract-ocr-jpn を入れる。別の場所なら --tessdata-dir か TESSDATA_PREFIX |
Failed loading language 'ja' |
言語の名前の誤り | 3文字の jpn で指定する |
Error: Tesseract (legacy) engine requested, but components are not present in …/jpn.traineddata!! |
--oem 0 を指定したが、学習データが LSTM だけ |
--oem を外す(既定の 3) |
Error in pixReadStream: Pdf reading is not supported |
PDF を直接渡した | pdftoppm で画像にしてから読む |
Error, cannot read input file print.pdf: No such file or directory |
ファイルのパスの誤り | 今いるフォルダーとファイル名を確かめる |
Estimating resolution as 373 |
画像に解像度(dpi)の情報が無い。エラーではない | 気になるなら --dpi 300 などを付ける |
Warning. Invalid resolution 0 dpi. Using 70 instead. |
解像度の情報が 0 | --dpi を付ける |
Detected 42 diacritics |
処理の途中の情報 | そのままでよい。2>/dev/null で消せる |
Too few characters. Skipping this page |
--psm 0(向きの判定)に対して文字が少なすぎる |
文字の多い画像で判定するか、向きを自分で直す |
Invalid PSM value, please enter a number between 0-13 |
psm の値が範囲外(14 など) | 0〜13 で指定する |
Could not set option: foo_bar=1 |
-c の設定名の誤り(処理は続く) |
tesseract --print-parameters で名前を確かめる |
TesseractNotFoundError: … is not installed or it's not in your PATH. |
pytesseract が tesseract を見つけられない | 本体を入れて PATH に足すか、tesseract_cmd に場所を書く |
RuntimeError: Tesseract process timeout |
pytesseract の timeout を超えた |
時間を延ばすか、画像を小さく分ける |
| 何も出力されない(終了コード 0) | 影・傾き・ぼけで文字を見つけられない。白紙も同じ | 前処理の節の順番で試す |
エラーにならないつまずき
- 数字のカンマがピリオドになる:jpn だけで「1,980」が「1.980」になった。
-l jpn+engにする。 - 語の間に空白が入る:jpn_vert 単独と、検索できる PDF から取り出した文字で起きた。jpn_vert は
-c preserve_interword_spaces=1か jpn+jpn_vert で消えた。PDF の文字の層はこの設定でも変わらなかったので、別に保存した txt を使う。 - 白抜き文字・透明な背景の白い文字が読めない:白黒を反転するか、暗い背景と合成する。
- HEIC の写真が読めない:
tesseract --versionの画像ライブラリの一覧に無い形式。JPG・PNG に変換する。変換のしかたは関連記事「WebP・HEICとは|JPG・PNGへの変換と画像圧縮を実測で解説」で扱っています。 - 拡大したら精度が下がった:二値化の窓の大きさが文字に合っていない。拡大の倍率と二値化の設定を組で試す。
よくある質問
Q. Tesseract OCR とは何ですか? A. 画像の中の文字をテキストに変える、オープンソースのOCRエンジンです。HP で開発され、2005年にオープンソースになりました。ライセンスは Apache License 2.0 で、100を超える言語を読めます。
Q. Tesseract で日本語を読むには?
A. 日本語の学習データ jpn(縦書きは jpn_vert)を入れ、-l jpn+eng を付けて実行します。Ubuntu は tesseract-ocr-jpn、Mac は tesseract-lang のパッケージで入ります。英数字が混ざる文書は eng を足したほうが正確でした。
Q. 精度が低いときは、まず何をすればよいですか? A. 言語の指定と psm を合わせ、次に画像を整えます。小さい文字は2〜3倍に拡大して余白を足し、写真は傾きを直して適応的二値化をかけます。手元では写真が 0% から 98.0% に上がりました。
Q. 縦書きは読めますか?
A. 読めます。-l jpn+jpn_vert で、手元の4列の縦書きは全56字が正しく読めました。jpn だけでは意味の無い文字列になります。
Q. 手書きの文字は読めますか? A. この記事では手書きは試していません。この記事の見本はどれもフォントで描いた文字です。手書きが多い書類は、クラウドのOCRも候補に入れ、同じ見本で正答率を測って選びます。
Q. psm は何を選べばよいですか? A. 文書1ページなら既定の 3、1行だけの画像は 7、罫線を消した表は 6、文字が散らばった画像は 11 が目安です。罫線の残った表に 6 を使うと 1.5% まで下がったので、画像に合わせて変えます。
Q. PDF を OCR できますか?
A. Tesseract は PDF を直接読めないので、pdftoppm などで 300dpi の画像にしてから読みます。出力の形式に pdf を付けると、検索できる PDF も作れます。
Q. pytesseract と Tesseract の違いは? A. Tesseract が文字を読む本体で、pytesseract は Python からその tesseract コマンドを呼び出すライブラリです。pytesseract だけを pip で入れても読めないので、本体も入れます。
Q. tessdata_best に替えると精度は上がりますか? A. 公式の説明では、tessdata_best は最も正確で最も遅く、Linux の配布物に入る tessdata_fast は最も速く精度は最も低いとされています。この記事の環境では tessdata_best を取得できなかったため、比べた数値はありません。手元の画像で、時間と正答率を両方測って決めます。
まとめ
この節では、この記事の要点を5つに絞って振り返ります。
- Tesseract OCR は無料・オープンソースのOCRエンジン。画像を手元から出さずに読める。日本語は jpn、縦書きは jpn_vert を入れ、英数字が混ざるなら
-l jpn+eng。 - 精度は画像しだい。手元の5枚では、写真は傾き補正と適応的二値化で 0%→98.0%、表は罫線を消して psm 6 で 73.5%→100%、スクリーンショットは3倍+余白で 85.5%→100%。
- psm は画像の形に合わせる(文書 3・1行 7・表 6・散らばった文字 11)。oem は既定のままでよく、Ubuntu の学習データでは
--oem 0はエラーになる。 - PDF は直接読めない。pdftoppm で 300dpi の画像にしてから読み、必要なら
pdfの出力で検索できる PDF にする。取り出した文字に空白が入る点に注意する。 - Python では pytesseract の
image_to_dataで信頼度を取り、低い単語を人が見直す。誤読した「1.980」はいちばん低い信頼度(60)だった。
音声を文字にする場合は、関連記事「Whisper文字起こし|Pythonコードとfaster-whisperの速さ比較」で扱っています。
参考・出典
確認日はいずれも 2026年10月29日です。
- tesseract-ocr「tesseract」README(GitHub):https://github.com/tesseract-ocr/tesseract
- tesseract-ocr「Releases」5.5.4:https://github.com/tesseract-ocr/tesseract/releases/tag/5.5.4
- Tesseract documentation「Installation」:https://tesseract-ocr.github.io/tessdoc/Installation.html
- Tesseract documentation「Traineddata Files」:https://tesseract-ocr.github.io/tessdoc/Data-Files.html
- Tesseract documentation「Improving the quality of the output」:https://tesseract-ocr.github.io/tessdoc/ImproveQuality.html
- UB Mannheim「Tesseract at UB Mannheim」wiki:https://github.com/UB-Mannheim/tesseract/wiki
- Homebrew Formulae「tesseract-lang」:https://formulae.brew.sh/formula/tesseract-lang
- PyPI「pytesseract」:https://pypi.org/project/pytesseract/
- OpenCV「Image Thresholding」:https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html
- Google Cloud「OCR Language Support」(Cloud Vision API):https://docs.cloud.google.com/vision/docs/languages
- Microsoft Learn「ドキュメント インテリジェンスの言語サポート - OCR」:https://learn.microsoft.com/ja-jp/azure/ai-services/document-intelligence/language-support/ocr
- AWS「Best Practices for Amazon Textract」:https://docs.aws.amazon.com/textract/latest/dg/textract-best-practices.html
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Tesseract OCRの使い方|日本語の正答率を前処理とpsmで上げる実測」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。