ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
LoRAによる書名からのNDC(日本十進分類法)自動分類の試み

LoRAによる書名からのNDC(日本十進分類法)自動分類の試み

ノートブック: Google Colab で開く / GitHub TL;DR 国立国会図書館サーチAPI(SRU)を用いて617件の書誌データを収集 llm-jp-3-1.8b に LoRA(全パラメータの0.67%)を適用し、書名からNDC第1次区分への分類を学習 学習前 22.0% → 学習後 78.0%(+56ポイント) LoRAはドメイン知識の注入ではなく、タスク遂行のための振る舞いを獲得させる手法 NDC(日本十進分類法)とは 日本の図書館で広く使われている書籍の分類体系です。すべての本に0〜9の第1次区分(類目)が割り当てられます。 NDC ジャンル 0 総記(百科事典・情報学など) 1 哲学・宗教 2 歴史・地理 3 社会科学(法律・経済・教育) 4 自然科学(数学・物理・医学) 5 技術・工学 6 産業(農業・商業・運輸) 7 芸術・スポーツ 8 言語 9 文学 図書館において資料の整理(目録作成)時にNDCコードを付与する作業は、主題分析の専門的知識を要する業務です。書名のみから大まかな分類を自動推定できるモデルがあれば、分類作業の初期スクリーニングとして有用です。 LoRAとは何か LoRA(Low-Rank Adaptation)は、大規模言語モデルを効率的にファインチューニングするための手法です。 通常のファインチューニングではモデルの全パラメータ(18億個など)を更新しますが、LoRAでは元のモデルを凍結し、Attention層に小さな「アダプター」行列を挿入してそこだけを学習させます。 モデル本体 (18億パラメータ) → 凍結(更新対象外) ↓ LoRAアダプター (数百万パラメータ) → 学習対象 今回の設定では全パラメータの約0.67%(12,582,912 / 1,880,197,120)だけを学習対象にしています。これにより、GPUメモリの消費を抑えつつ、タスク特化の性能を得ることができます。 Step 1. 国立国会図書館サーチAPIからデータ取得 国立国会図書館サーチのSRU APIは誰でも無料で利用可能です。各NDCカテゴリから最大80件ずつ取得し、タイトル文字数(3〜80文字)によるフィルタリング後に合計617件の書誌データを収集しました。カテゴリごとの取得件数は以下の通りで、均等ではありません。 NDC カテゴリ 取得件数 0 総記 65件 1 哲学 67件 2 歴史 73件 3 社会科学 59件 4 自然科学 52件 5 技術・工学 63件 6 産業 65件 7 芸術・スポーツ 57件 8 言語 67件 9 文学 49件 なお、APIの特性上、取得される書誌には書名が極めて短いものや内容が判別しにくいものも含まれるため、学習データの品質には一定のノイズが存在します。 ...

Azure OpenAI GPT-4 vs Document Intelligence: 日本語縦書きOCRの比較検証

Azure OpenAI GPT-4 vs Document Intelligence: 日本語縦書きOCRの比較検証

概要 Microsoft Azureが提供する2つのOCRサービス(Azure OpenAI GPT-4 VisionとAzure Document Intelligence)を使用して、日本語の縦書き原稿用紙のOCR処理を実施し、その結果を詳細に比較検証しました。 検証対象画像 画像ソース : Canvaテンプレート(400字詰め原稿用紙) URL : https://www.canva.com/ja_jp/templates/EAFbqUoH7P8/ 画像の特徴 : 20×20の400字詰め原稿用紙 縦書きレイアウト 薄いグリッド線(マス目) タイトル欄と本文欄の区別 正解データ(Ground Truth) 原稿のタイトル 佐藤ちあき 原稿用紙に書くテキストが入ります。作文や小論文を作ったり、小説を書いたりなどにご活用ください。 このテキストを使用する場合は、日本語の全角を使うことでマスにあった文字を打つことができます。手書きで使用したい場合は、このテキストを削除し、印刷してご使用ください。 1. Azure OpenAI GPT-4.1 による認識結果 認識されたテキスト 原稿のタイトル 佐藤 ちあき 原稿用紙に書くテキストが入ります。作文や小論文を作ったり、小説を書いたりなどにご活用ください。 このテキストを使用する場合は、日本語の全角を使うことでマスにあった文字を打つことができます。手書きで使用したい場合は、このテキストを削除し、印刷してご使用ください。 評価 GPT-4.1は縦書きの原稿用紙に対して以下の特徴を示しました: ✅ タイトルと著者名の順序を正しく認識 ✅ 本文の開始部分を正確に認識 ✅ 原稿用紙のマス目に関する記述を認識 ✅ 縦書きの読み順(右から左)を完璧に理解 ✅ 文章の連続性を保持 正解データとの差異 「佐藤ちあき」→「佐藤 ちあき」(全角スペースが追加) これは画像上でスペースがあるように見えるための合理的な解釈 その他のテキストは完全に一致 精度評価: 99% 2. Azure Document Intelligence による認識結果 認識された領域の可視化 評価 Document Intelligenceは以下の特徴を示しました: ✅ 文字認識能力 - 個々の文字は正確に認識(「佐藤」「ちあき」「原稿」等) ⚠️ 文章の断片化 - マス目ごとに独立した要素として処理され、連続性が失われる ❌ 縦書き読み順の課題 - 縦書きの右から左への流れを適切に処理できない ⚠️ 後処理が必要 - 座標情報を使った再構成により、ある程度の復元は可能 ✅ 座標情報の詳細取得 - 各文字の正確な位置情報は完璧に取得 精度評価: 文字認識精度は約80%、ただし縦書きレイアウトの理解に課題あり ...

LLMによる原稿用紙OCR性能比較:縦書き日本語の認識精度検証

LLMによる原稿用紙OCR性能比較:縦書き日本語の認識精度検証

はじめに 本記事では、実際の原稿用紙画像を用いて 主要LLMモデルのOCR性能を比較検証しました。多くのOCRベンチマークが印刷文書や横書きテキストを対象とする中、日本独自の縦書き原稿用紙という特殊なフォーマット での認識精度を評価することで、各モデルの日本語文書理解能力をより実践的に検証しています。 本検証の特徴 原稿用紙という日本固有のフォーマットを使用 :マス目に収められた文字、縦書きレイアウト、特有の余白構成など、複雑な要素を含む画像での検証 実用シーンを想定 :作文、小説、論文など、実際の執筆場面で使用される原稿用紙での性能評価 最新モデルの網羅的比較 :GPT-5、GPT-4.1、Gemini 2.5 Pro、Claude Opus 4.1、Claude Sonnet 4という最新モデルを同一条件で比較 検証概要 使用画像 画像ソース : Canvaテンプレート(400字詰め原稿用紙) URL : https://www.canva.com/ja_jp/templates/EAFbqUoH7P8/ 画像の特徴 : 20×20の400字詰め原稿用紙 縦書きレイアウト 薄いグリッド線(マス目) タイトル欄と本文欄の区別 検証条件 使用プロンプト : 「OCRして」(全モデル共通) パラメータ : 各モデルのデフォルト設定 実行時期 : 2025年9月 正解テキスト 原稿のタイトル 佐藤 ちあき 原稿用紙に書くテキストが入ります。作文や小論文を作ったり、小説を書いたりなどにご活用ください。 このテキストを使用する場合は、日本語の全角を使うことでマスにあった文字を打つことができます。手書きで使用したい場合は、このテキストを削除し、印刷してご使用ください。 評価方法 本記事の精度スコアは、文字認識の正確性、レイアウト理解、文章構造の保持などを総合的に評価した主観的なスコア です。実用的な観点から、各モデルの強みと課題を分かりやすく数値化しています。 OCR結果詳細 🥇 Gemini 2.5 Pro - 精度スコア: 98/100 原稿のタイトル 佐藤ちあき 原稿用紙に書くテキストが入ります。作文や小論文を作ったり、小説を書いたりなどにご活用ください。 このテキストを使用する場合は、日本語の全角を使うことでマスにあった文字を打つことができます。手書きで使用したい場合は、このテキストを削除し、印刷してご使用ください。 評価ポイント : ✅ 文字認識: ほぼ完璧 ⚠️ 著者名のスペース欠落 ✅ 段落構成: 適切な2段落構成 ✅ レイアウト保持: 優秀 🥈 GPT-5 - 精度スコア: 97/100 原稿のタイトル 佐藤 ちあき 原稿用紙に書くテキストが入ります。作文や小論文を作ったり、小説を書いたりなどにご活用ください。このテキストを使用する場合は、日本語の全角を使うことでマスにあった文字を打つことができます。手書きで使用したい場合は、このテキストを削除し、印刷してご使用ください。 評価ポイント : ...

LLMに関するメモ

LLMに関するメモ

概要 LLMに関するツールについて、備忘録です。 LangChain https://www.langchain.com/ 以下のように説明されていました。 LangChain is a composable framework to build with LLMs. LangGraph is the orchestration framework for controllable agentic workflows. LlamaIndex https://docs.llamaindex.ai/en/stable/ 以下のように説明されていました。 LlamaIndex is a framework for building context-augmented generative AI applications with LLMs including agents and workflows. LangChain と LlamaIndex gpt-4oの回答は以下でした。 LangChainとLlamaIndexはどちらも、LLMs(大規模言語モデル)を利用したアプリケーション開発を支援するフレームワーク 簡単に調べてみたところ、RAG(Retrieval-Augmented Generation)を行う際には、LlamaIndexがより簡単に使用できるようでした。 Ollama https://github.com/ollama/ollama 以下のように説明されていました。 Get up and running with Llama 3.2, Mistral, Gemma 2, and other large language models. ...

mdx.jpの1GPUパックとOllamaを使ってローカルLLMを実行する

mdx.jpの1GPUパックとOllamaを使ってローカルLLMを実行する

概要 mdx.jpの1GPUパックとOllamaを使ってローカルLLMを実行する機会がありましたので、備忘録です。 https://mdx.jp/mdx1/p/guide/charge 参考 以下の記事を参考にしました。 https://highreso.jp/edgehub/machinelearning/ollamainference.html モデルのダウンロード ここでは、llama3.1:70bを対象にします。 ダウンロード完了後、以下のように選択可能となります。 使用例 以下の『渋沢栄一伝記資料』を使用します。 https://github.com/shibusawa-dlab/lab1 APIの利用 以下に記載がありました。 https://docs.openwebui.com/api/ 以下でJWTトークンとは別に、APIキーを発行します。 以下が実行例です。 import requests import json text = '''六月十四日 日 晴 風ナクシテ暑気昨日ニ比シテ少ク加フルヲ覚フ 朝来少シク風邪気ナルニヨリ晏起、 八時 洗面ヲナス、後、六孫王宮ノ神官又ハ同志社員 安藤 氏等来訪ス、 十時 大阪支店長 野口 、 神戸 杉田 、 名古屋 清水 及 西京 支店長 中川 、其他 小林 、 片野 、 前原 等ノ諸氏ヲ伴ヒ 嵐山 ニ抵リ、三軒屋ニテ午飧シ、船ヲ浮ヘテ大江川《(堰)》ヲ遡ル、船中囲碁ノ興アリ、 嵐山 ノ緑葉少シク繁茂ニ過ルモ両岸ニハ山花咲乱レテ頗ル風致アリ、 午後四時 過 玉川楼 ニ帰宿ス、今朝、 尾崎 司法大臣ノ秘書 黒田 氏来ル、又、 林 和太郎 氏( 桂 氏ノ父)来話ス、 午前十時 ヨリ各支店主任ト共ニ 嵐山 ニ抵リ三軒屋ニテ午飧ス、後、大江川《(大堰川)》ニ船ヲ浮ヘ、 午後四時 帰宿ス、後、 玉川楼 ニ於テ晩飧会ヲ開ク、種々ノ余興アリ、夜 十時 散会ス、 中井 三郎兵衛 氏モ来会ス''' APIKEY = "sk-xxxx" url = "http://localhost:8080/api/chat/completions" headers = { "Authorization": f"Bearer {APIKEY}", "Content-Type": "application/json" } thres = 300 data = { "model": "llama3.1:70b", "messages": [ { "role": "user", "content": f"次のテキストは渋沢栄一の日記の一部です。テキストを{thres}字程度に要約してください。要約文のみを改行せずに返してください。句読点を適宜使用してください。\n\n{text}" } ] } response = requests.post(url, headers=headers, data=json.dumps(data)) # レスポンスの表示 print(response.status_code) print(response.json()) 結果、以下が得られました。ただし、結果が返却されるまでに60s弱かかってしまいました。 ...