Python

tesseractでのOCR(横書きの資料 縦書きの資料)

目次 1. tesseractとは 2. Tesseractの特上 3. Tesseractの出力品質向上 4. tesseractの実験(コード) 4.1 横書きの資料 4.2 縦書きの資料 5. まとめ   1. tesseractとは Tesseractは、オープンソースの光学文字認識(OCR)エンジンであり、文字を含む画像データからテキストデータを抽出するために使用されます。Tesseractは、元々ヒューレット・パッカード(HP)研究所で開発され、その後Googleによって取得され、オープンソースプロジェクトとしてリリースされました。Tesseractは高い精度で様々な言語のテキストを認識でき、印刷されたテキストや手書きのテキスト、さまざまなフォントやスタイルのテキストなどを処理する能力を持っています。   2. Tesseractの特上 – オープンソース: Tesseractはオープンソースプロジェクトであり、誰でも無料で使用できる上に、カスタマイズや拡張も可能です。 – 多言語サポート: Tesseractは多くの言語をサポートし、さまざまなテキストの書体や表現を認識できます。 – 高度な画像処理: Tesseractは内部で画像処理アルゴリズムを使用して、画像の前処理を行います。これにより、劣悪な画像品質でも比較的良好なOCR結果を得ることができます。 – コマンドラインツールとライブラリ: Tesseractはコマンドラインツールとしても使用できるほか、ライブラリとして他のアプリケーションに統合することも可能です。 – 学習とカスタマイズ: Tesseractは一般的なフォントやスタイルに対する事前学習がされており、特定のフォントや言語に適応させることも可能です。 – 活発なコミュニティ: Tesseractは大規模なコミュニティに支えられており、新機能の追加やバグ修正が継続的に行われています。   3. Tesseractの出力品質向上 OCRの結果を向上させるために画像の改善が重要です。 リスケーリング、2値化、ノイズ除去、膨張、収縮などの操作を適用します。   リスケーリング: – 少なくとも300 DPIの画像を使用して最適な結果を得ます。 – 大文字の高さの最適なピクセル値が解像度に影響します。   2値化: – …

tesseractでのOCR(横書きの資料 縦書きの資料) Read More »

Jupyter Notebook拡張機能の8つ紹介

Jupyter Notebook拡張機能「Move selected cell」、「Hinterland」
、「Snippets Menu」、「Runtools」、「Hide input」、「Hide input all」、「Table of Contents (2)」、Collapsible Headings」、絵文字

ウォルラス演算子のユースケース(Walrus Operator:Use cases)

目次 ウォルラス演算子 Walrus Operatorとは ユースケース _2.1 If-Statementsからの値の再利用 _2.2 List Comprehensionsでのフィルタリング _2.3 While-Loopsでのデータ読み取り _2.4 計算されたの再利用   1. ウォルラス演算子 Walrus Operatorとは Python のバージョン 3.8 ( 2019 年 10 月リリース)はウォルラス演算子 (:=)というassignment expressions を導入されました。セイウチの牙に少し似ているため、「セイウチ演算子」(:=)とも呼ばれます。ウォルラス演算子はvarが「value」に設定され、同時に値が出力されます。   2. ユースケース 2.1 If-Statementsからの値の再利用 リストの数量を確認し、リストが指定された値を表示します。warningとリストの数量を出力します。 下記の例は、リストの値が5を超えると、warningとリストの数量を表示します。 values = [1, 2, 3, 4, 5, 6] if (n := len(values)) > 5: print(f’The list is longer …

ウォルラス演算子のユースケース(Walrus Operator:Use cases) Read More »

LightGBMの解説

LightGBMの解説 – S-Analysis
PythonLibraryにおけるLightGBMとは、(ライト・ジービーエム)決定木アルゴリズムに基づいた勾配ブースティングの機械学習です。
LightGBMとは|LightGBMの特徴|LightGBMのパラメーター|Pythonの実験

モデルの評価モジュールのsklearn.metrics

scikit-learnには、作成したモデルの評価を行うモジュールとしてsklearn.metricsが搭載されています。 今回はsklearn.metricsをまとめた話をしていきます。 https://scikit-learn.org/stable/modules/classes.html 目次 1. sklearn.metricsモジュール 2. モデル選択インターフェース 3. 分類のメトリック 4. 回帰のメトリック 5. マルチラベルランキングのメトリック 6. クラスタリングのメトリック 7. バイクラスタリングのメトリック 8. ペアワイズのメトリック   1. sklearn.metricsモジュール sklearn.metricsモジュールには、スコア関数、パフォーマンスメトリック、ペアワイズメトリック、および距離計算が含まれます。 2. モデル選択インターフェース metrics.check_scoring(estimator [、scoring、…])ユーザーオプションからスコアラーを決定します。 metrics.get_scorer(スコアリング)文字列からスコアラーを取得します。 metrics.make_scorer(score_func [、…])パフォーマンスメトリックまたは損失関数からスコアラーを作成します。 3. 分類のメトリック クラス分類 (Classification) を行った際の識別結果 (予測結果) の精度を評価するモジュールを実装します。 metrics.accuracy_score(y_true、y_pred [、…])精度分類スコアです。 metrics.auc(x、y [、reorder])trapezoidal ruleを使用したArea Under the Curve(AUC)。 metrics.average_precision_score(y_true、y_score)予測スコアから平均精度(AP) metrics.balanced_accuracy_score(y_true、y_pred)バランスの精度 metrics.brier_score_loss(y_true、y_prob [、…])ブライアースコア metrics.classification_report(y_true、y_pred)主な分類指標を示すテキストレポートを作成します。 metrics.cohen_kappa_score(y1、y2 [、labels、…])Cohen’s kappa:アノテーター間の合意を測定する統計指標です。 metrics.confusion_matrix(y_true、y_pred …

モデルの評価モジュールのsklearn.metrics Read More »

ランク学習の解説

今回の記事はPythonのsklearnでランク学習を解説します。 目次 1. ランク学習とは 2. ランク学習のアプローチ 1. ランク学習とは ランク学習は英語では ”Learning to rank” といってLTRの略称、または ”Machine-learned rankingといってMLRとよく省略されます。ランク学習は一般に教師あり、半教師あり、または強化学習を用いてランキング問題を解く方法です。たとえば、どこかの検索エンジンでキーワードを入力して、これらのウェブページをどういう順番で表示するのが良いのかを学習するのがランク学習になります。ランク学習を利用することで、検索エンジンではユーザーに見られる確率が高いページを上位に表示したり、ショッピングサイトではおすすめの商品を提示することができるようになります。 ランク学習機械学習と別の機械学習の違い – LTRの入力データはアイテムのリストです。LTRの目的は、これらのアイテムの最適な順序を見つけることです。 – LTRのアイテムが正確なスコアより、アイテム間の相対的な順序のほうが大切です。 2. ランク学習のアプローチ ポイントワイズアプローチ(Pointwise Approach) ポイントワイズアプローチの入力データには、各単一ドキュメントの特徴ベクトルが含まれています。 出力スペースには、個々のドキュメントの関連度が含まれます。 関連度の観点から、さまざまな種類の判断をグラウンドトゥルースラベルに変換できます。 ペアワイズアプローチ(Pairwise Approach) ペアワイズアプローチの入力データには、特徴ベクトルで表されるドキュメントのペアが含まれています。 出力スペースには、ドキュメントの各ペア間のペアワイズ設定({+ 1、-1}から値を取得)が含まれます。 さまざまな種類の判断は、ペアワイズ設定の観点からグラウンドトゥルースラベルに変換できます。 リストワイズアプローチ(Listwise Approach) リストワイズアプローチの入力データには、クエリに関連付けられたドキュメントのセットが含まれます。リスト方式の出力スペースには、ドキュメントのランク付けされたリスト(または順列)が含まれます。 ランク付けされたリストの観点から、さまざまな種類の判断をグラウンドトゥルースラベルに変換できます。 論文:”Learning to Rank for Information Retrieval”、Tie-Yan Liu of Microsoft Research Asia https://www.cda.cn/uploadfile/image/20151220/20151220115436_46293.pdf

PythonのJoblibで並列処理

前回の記事はPysparkの分散処理でビックデータ処理の時間を大きく短縮させる方法を解説しました。今回は複数のCPUコアで並列処理の高速に計算の方法を解説します。 目次 1. joblibの概要 __1.1 分散処理 並列処理の違い __1.2  joblib.Parallelの解説 2. 実験・コード __2.1 ライブラリーのインストール __2.2  環境情報を表示 __2.3. 普通のPythonの処理 __2.4.  Joblibの並列処理 __2.5. 結果比較(可視化) 3. まとめ 1. joblibの概要 1.1分散処理 並列処理の違い 並列(Parallel⁠):複数の計算機や複数の計算ユニットで構成される1つの自律的な処理です。1つの自律的なシステムであるため,当該処理系を構成する複数の計算機は,常に同一の状態を維持している必要があります。並列とは、計算速度を向上させるために同時に行うという物理的な概念です。 分散(Distributed⁠):複数の自律的なシステムをネットワークとおして連携する処理です。分散システム技術をレプリケーションと呼びます。クラスター構成を構築して、やるようなSpark等がこれに当てはまります。 この2つは、そもそも目的が違う概念です。並行というのは、世の中一般、同時進行するものごとをプログラムとして表現する際に用いる広い概念です。一方で並列というのは、主に計算速度を稼ぐために計算を同時に進めることを言います。 1.2 joblib.Parallelの解説 joblib.Parallel(n_jobs=None, backend=None, verbose=0, timeout=None, pre_dispatch=’2 * n_jobs’, batch_size=’auto’, temp_folder=None, max_nbytes=’1M’, mmap_mode=’r’, prefer=None, require=None) n_jobsはタスクを何分割するかという指定をする部分です。-1でコア数をマックスで使うように計らってくれます。 verboseは途中経過を表示する頻度を指定する引数で0~10の値です。0ではなにも表示せず、10で最頻になります。 backendで”threading”を選べばマルチスレッドで動作して、オーバーヘッドは減るがPythonのGILにより通常の処理中は並列処理できない(GILをリリースする部分だけが並列で動作できる=DBアクセスの待ちなどが大きいプログラムの場合のみ有効で小さい場合は速度低下の恐れもある)、デフォルトは”multiprocessing”のマルチプロセス動作です。 Timeout 完了する各タスクのタイムアウト制限です。タスクに時間がかかると、TimeOutErrorが発生します。 pre_dispatch 事前発送されるタスクのバッチの数。 batch_size 各ワーカーに一度にディスパッチする自動的のタスクの数。 temp_folder ワーカープロセスとメモリを共有するために大きな配列をマッピングするためにプールで使用されるフォルダーです。 …

PythonのJoblibで並列処理 Read More »

ハフ変換とLSDによる直線検出の比較

関連記事: 画像解析 前回の記事は「OpenCV + Pythonでの直線検出」を解説しました。今回はPythonでハフ変換(Hough)とLSDによる直線検出を比較します。 目次 1. ハフ変換(Hough Transform) 2. LSD (Line Segment Detector) 3. ハフとLSDの比較 4. 実験・コード __4.1 データロード __4.2 ライブラリのインストール __4.3. 直線検出 __4.4. 結果比較 1. ハフ変換とは ハフ変換 (Hough変換) は、画像処理で画像の特徴抽出法の一つです。現在広く用いられている変換法はRichard Duda及びPeter Hartが1972年に発明しました。ハフ変換の基本原理は点を通る直線は無限個存在し、それぞれが様々な方向を向きます。ハフ変換の目的は、それらの直線の中で、画像の「特徴点」を最も多く通るものを決定します。 直線の式は次のようになる: ハフ変換では画像空間からρ-θパラメータ空間への変換を行います。ある画像空間上に孤立点があり、点の座標が(x, y)である場合、パラメータ空間への変換を行うとどのような結果が得られるのか、考えることにします。 ρ : 座標(x, y)を通る直線に対し、原点から垂線を下ろしたときの長さ θ : 座標(x, y)を通る直線に対し、原点から垂線を下ろしたときにx軸となす角度 論文:Use of the Hough Transformation To. Detect Lines and Curves in Pictures …

ハフ変換とLSDによる直線検出の比較 Read More »

PythonでCatBoostの解説

関連記事: 決定木分析、ランダムフォレスト、Xgboost Kaggleなどのデータ分析競技といえば、XGBoost, Light GBM, CatBoost の決定木アルゴリズムをよく使われています。分類分析系と予測分析系の競技のKaggleの上位にランクされています。今回の記事はCatBoostの新しい決定木アルゴリズムを解説します。 目次 1. CatBoostとは 2. 実験・コード __2.1 データロード __2.2 10,000件くらいサンプルデータを作成 __2.3. XGBoost グリッドサーチで 81モデルから最適なパラメータを探索 __2.4 XGBoost 最適なパラメータのモデルを作成 __2.5. Light GBM グリッドサーチで 81モデルから最適なパラメータを探索 __2.6 Light GBM最適なパラメータのモデルを作成(Categorial Feature除く) __2.7 Light GBM最適なパラメータのモデルを作成(Categorial Feature含む) __2.8. CatBoost グリッドサーチで 81モデルから最適なパラメータを探索 __2.9 CatBoost 最適なパラメータのモデルを作成(Categorial Feature除く) __2.10 CatBoost 最適なパラメータのモデルを作成(Categorial Feature含む 3. モデル評価評価:学習時間 AUC 1. CatBoostとは CatBoostはCategory Boostingの略で、決定木ベースの勾配ブースティングに基づく機械学習ライブラリ。2017にYandex社からCatBoostが発表されました。 特徴: 1)回帰予測、分類の教師あり学習に対応 2)過学習を減らして、高い精度、学習速度を誇る 3)GPU、マルチGPUに対応 決定木ベースのアルゴリズムの歴史 CatBoostは、オーバーフィットを減らし、データセット全体をトレーニングに使用できるようにする、より効率的な戦略を使用します。 …

PythonでCatBoostの解説 Read More »