Linux専用ノートマシンをつくり、下記のNDL古典籍OCR-Liteをインストールし、複数ページをサクサク変換してくれます。最終的に人の目で確認するのがベストですが、読めないくずれたひらがなを変換するところは優秀だと思います。GUI版のインストール試行錯誤しました。適切なFlutterのバージョンがあります。
はじめに
国立国会図書館のOCRエンジンをGUIで利用できるndlkotenocr-lite-guiをLinux(Debian 12)環境でビルドした際の記録です。特定のFletバージョン(0.24.1)を指定してビルドする場合、最新のFlutter SDKでは破壊的変更によりエラーが出るため、適切なバージョンの選定が重要になります。
以下、NDLにあるインターネット公開の昭和初期の岩波書店、西晋一郎著「尊徳・梅岩」をOCRしました。旧漢字ですが、そのままの場合もあるし、新漢字に変換する場合もあります。間違った似たような漢字に変換する場合もあります。精度は8割くらいでしょうか。

環境
- OS: Debian 12 (Bookworm)
- Python: 3.11
- Flet: 0.24.1
- ターゲット: Linux デスクトップアプリ
Linuxの場合
事前にFlutter-SDKの導入が必要です。依存関係のインストールが必要です。
Debian 12 (Bookworm) で Flet を使用して Linux デスクトップアプリをビルドするには、主に Flutter SDK のインストール と、ビルドに必要な システム依存ライブラリ のセットアップが必要です。
エラーメッセージにある通り、現在は flutter コマンドが認識されていないため、ビルドが停止しています。
1. 必要なシステムパッケージのインストール
Flutter を Linux で動作させるために必要なツールとライブラリをインストールします。以下のコマンドをターミナルで実行してください。
sudo apt update
sudo apt install -y curl git unzip xz-utils zip libglu1-mesa \
cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev
sudo apt install -y clang cmake ninja-build pkg-config libgtk-3-dev
README.mdのインストール内容
#(ndlkotenocr-lite-guiと同階層で実行する)
python3 -m venv ocrenv
source ./ocrenv/bin/activate
pip install flet==0.24.1
cp -r ../src .
flet build linux
2. Flutter SDK のインストール
Flet のビルドには Flutter が必須です。以下の手順でセットアップします。
-
ダウンロードと展開:
Flutter 公式サイト から最新の Stable 版をダウンロードするか、以下のコマンドで/optなどに配置します。
cd ~
git clone https://github.com/flutter/flutter.git -b stable
-
PATH を通す:
~/.bashrc(または使用しているシェルの設定ファイル) に以下を追記します。
export PATH="$PATH:$HOME/flutter/bin"
- 設定の反映:
source ~/.bashrc
-
確認:
flutter doctorを実行し、不足しているものがないか確認します。
3. Python 依存関係の警告について (urllib3)
エラーに出ている RequestsDependencyWarning は、インストールされている urllib3 のバージョンが新しすぎて requests ライブラリが想定している範囲外であることを示しています。
実害がない場合も多いですが、気持ち悪い場合は仮想環境内で以下のコマンドを試してください。
pip install "urllib3<2"
4. NDL古典籍OCR特有の注意点
ビルドしようとしている ndlkotenocr-lite は、内部で PyInstaller や特定の共有ライブラリを使用している場合があります。
-
Python 開発用ヘッダー: ビルド中に Python 関連のエラーが出る場合は、
sudo apt install python3-devを追加してください。 -
権限:
flet build linuxを実行する際は、現在のユーザーがプロジェクトディレクトリに対して完全な書き込み権限を持っていることを確認してください。
次のステップへのチェックリスト
-
flutter --versionが正しくバージョンを返しますか? -
flutter doctorで "Chrome" や "Linux toolchain" にチェックが入っていますか? -
その状態で再度
flet build linuxを実行してみてください。
1. 発生した問題:バージョン不整合の連鎖
Flet 0.24.1を使用して flet build linux を実行した際、以下の2つのエラーに直面しました。
① Flutterが新しすぎる場合 (Flutter 3.27.x / 3.22.x)
Flutter SDK側の引数の変更(headingRowAlignment 等の未定義エラー)により、Flet内部のDartコードがコンパイルエラーを起こしました。
② Flutter(Dart)が古すぎる場合 (Flutter 3.19.x)
Fletが依存する file_picker 等のパッケージが Dart 3.4.0 以上を要求するため、SDKバージョン不足でビルドが止まりました。
2. 解決策:黄金の「Flutter 3.24.5」
試行錯誤の結果、Flutter 3.24.5 が Flet 0.24.1 のビルドに最適な「落としどころ」であることが分かりました。
手順:Flutter SDKのピン留め
cd ~/flutter
# 特定のバージョンに切り替え
git checkout 3.24.5
flutter doctor
3. ビルド手順の全容
仮想環境を作成し、依存関係をクリーンにした状態でビルドを行います。
# プロジェクトディレクトリへ移動
cd ndlkotenocr-lite-gui
# Python仮想環境の構築
python3 -m venv ocrenv
source ./ocrenv/bin/activate
pip install flet==0.24.1
# ビルド実行
rm -rf build # 以前の失敗したキャッシュを削除
flet build linux
4. 実行と注意点
ビルド成功後、build/linux/ndlkotenocr_lite_gui が生成されます。
- 起動: ターミナルから実行してログを確認することを推奨。
- 精度: 昭和初期の旧漢字も高精度で認識可能。GoogleドキュメントのOCRと同等の性能を確認。
-
注意: Debian 12環境では
llvm-14などのツールチェーンが必要になる場合があります。
まとめ
Fletのビルドでエラーが出る場合は、Fletのリリース時期に合わせて Flutter SDKをダウングレード(git checkout) するのが最も確実な解決策です。
flutter doctor
mak@deb-cg:~/flutter$ flutter doctor
Downloading Linux x64 Dart SDK from Flutter engine a18df97ca57a249df5d8d68cd0820600223ce262...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 203M 100 203M 0 0 7107k 0 0:00:29 0:00:29 --:--:-- 7362k
Building flutter tool...
Resolving dependencies...
Downloading packages... (3.2s)
Got dependencies.
Downloading package sky_engine... 405ms
Downloading package flutter_gpu... 130ms
Downloading flutter_patched_sdk tools... 646ms
Downloading flutter_patched_sdk_product tools... 761ms
Downloading linux-x64 tools... 4.9s
Downloading linux-x64/font-subset tools... 1,092ms
Doctor summary (to see all details, run flutter doctor -v):
[!] Flutter (Channel [user-branch], 3.24.5, on Debian GNU/Linux 12 (bookworm)
6.1.0-43-amd64, locale ja_JP.UTF-8)
! Flutter version 3.24.5 on channel [user-branch] at /home/mak/flutter
Currently on an unknown channel. Run `flutter channel` to switch to an
official channel.
If that doesn't fix the issue, reinstall Flutter by following instructions
at https://flutter.dev/setup.
! Upstream repository unknown source is not a standard remote.
Set environment variable "FLUTTER_GIT_URL" to unknown source to dismiss
this error.
[✗] Android toolchain - develop for Android devices
✗ Unable to locate Android SDK.
Install Android Studio from:
https://developer.android.com/studio/index.html
On first launch it will assist you in installing the Android SDK
components.
(or visit https://flutter.dev/to/linux-android-setup for detailed
instructions).
If the Android SDK has been installed to a custom location, please use
`flutter config --android-sdk` to update to that location.
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[!] Android Studio (not installed)
[✓] VS Code (version 1.109.5)
[✓] Connected device (2 available)
[✓] Network resources
! Doctor found issues in 3 categories.
flutter --version
mak@deb-cg:~/flutter$ flutter --version
Flutter 3.24.5 • channel [user-branch] • unknown source
Framework • revision dec2ee5c1f (1 year, 4 months ago) • 2024-11-13 11:13:06
-0800
Engine • revision a18df97ca5
Tools • Dart 3.5.4 • DevTools 2.37.3
mak@deb-cg:~/flutter$ cd ~/software/ndlkotenocr-lite/ndlkotenocr-lite-gui/
mak@deb-cg:~/software/ndlkotenocr-lite/ndlkotenocr-lite-gui$ source ./ocrenv/bin/activate
(ocrenv) mak@deb-cg:~/software/ndlkotenocr-lite/ndlkotenocr-lite-gui$ flutter clean
Error: No pubspec.yaml file found.
flet build linuxでビルド
This command should be run from the root of your Flutter project.
(ocrenv) mak@deb-cg:~/software/ndlkotenocr-lite/ndlkotenocr-lite-gui$ flet build linux
/home/mak/software/ndlkotenocr-lite/ndlkotenocr-lite-gui/ocrenv/lib/python3.11/s
ite-packages/requests/__init__.py:113: RequestsDependencyWarning: urllib3
(2.6.3) or chardet (6.0.0.post1)/charset_normalizer (3.4.4) doesn't match a
supported version!
warnings.warn(
[21:48:42] Created Flutter bootstrap project from
gh:flet-dev/flet-build-template with ref 0.24.1 ✅
Customized app icons and splash images ✅
[21:48:48] Generated app icons ✅
[21:49:42] Packaged Python app ✅
[21:50:40] Built app for Linux ✅
[21:50:41] Copied build to build/linux directory ✅
Successfully built your app for Linux! 🥳 Find it in build/linux
directory. 📁
ndlkotenocr_lite_guiの起動
(ocrenv) mak@deb-cg:~/software/ndlkotenocr-lite/ndlkotenocr-lite-gui/build/linux$ ./ndlkotenocr_lite_gui
modulePaths joined string: /tmp/ndlkotenocr_lite_gui-1.0.0-1/app:/tmp/ndlkotenocr_lite_gui-1.0.0-1/app/__pypackages__:/home/mak/software/ndlkotenocr-lite/ndlkotenocr-lite-gui/build/linux/python3.11:/home/mak/software/ndlkotenocr-lite/ndlkotenocr-lite-gui/build/linux/python3.11/site-packages
environmentVariables is a MAP: 3
env var FLET_PLATFORM=linux
env var FLET_SERVER_UDS_PATH=flet.sock
env var FLET_PYTHON_CALLBACK_SOCKET_ADDR=stdout.sock
exe_dir: /home/mak/software/ndlkotenocr-lite/ndlkotenocr-lite-gui/build/linux
app_dir: /tmp/ndlkotenocr_lite_gui-1.0.0-1/app
sync: false
Fontconfig warning: ignoring UTF-8: not a valid region tag
** (ndlkotenocr_lite_gui:7332): WARNING **: 22:09:23.919: Attempted to set message handler on an FlBinaryMessenger without an engine
** (ndlkotenocr_lite_gui:7332): WARNING **: 22:09:23.919: Attempted to set message handler on an FlBinaryMessenger without an engine
ありがとうございます。
