@Blog{zip358.com}
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。
日本語に特化したOCR、文書画像解析Pythonパッケージ「YomiToku」でとさでん時刻表を解析
2024.12.17
おはようございます.日本語に特化したOCR、文書画像解析Pythonパッケージ「YomiToku」でとさでん時刻表を解析出来るかやってみました.とさでん交通は未だに時刻表がPDFなのでとても見にくいのです、業者さんは提案しないのかな.
ちなみにとさでん交通さんとは高知県の路面電車になります.地元のために頑張ってる公共交通機関ですが過去には経営が厳しい時期もあったようです.今も大変は大変だと思います、高知県は基本的には公共交通機関を使用する人よりも車通勤が多いです、そして少子高齢社会が進んでいる県でもあるので.
そんな公共交通機関の時刻表PDF解析してHTML化してみようと機械学習のPythonライブラリ「YomiToku」を使用してみました、結果、なかなか精度は良いのですがHTML化された物をそのままでは使用できないので手直しが必要です.
恐らく普通のPDF表だったら、綺麗にHTML化出来ると思いますが、とさでん交通さんの時刻表が特殊過ぎるのでこういう結果になったのだと自分は結論付けました.
ちなみに巷では一回画像へ変換しないといけないなどと記載している記事を見かけますが、PDFファイルのまま、OCR解析出来ます.
自分はこんな感じのコマンドラインで実行しました.
yomitoku ./pdfs/akebono.pdf -f html -o output_html
明日へ続く
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
コマンドライン, でん交通さん, ファイル, ライブラリ, 公共交通機関, 厳しい時期, 地元, 少子高齢社会, 巷, 手直し, 文書画像解析パッケージ, 時刻表, 未だ, 機械学習, 県, 精度, 経営, 路面電車, 車通勤, 高知県,
さくらレンタルサーバーpip
2024.02.13
おはようございます、さくらレンタルサーバーでpipを使用するにはどうもライブラリのインストール場所を実行時に教えてあげないと実行できないようなので、前回までコマンドラインから叩いても上手く動作しなかったぽっい。
その対応することで、今年はVPSサーバーとはおさらば出来そうです。pipのインストールについてはいろいろな人がさくらレンタルサーバーにpipのインストール方法を書いているのでそれを模倣すればできるようになると思います。
明日へ続く。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
pip, VPSサーバー, インストール, インストール場所, インストール方法, コマンドライン, さくらレンタルサーバー, ライブラリ, 人, 前回, 実行時,
数珠繋ぎにTweet(リプライ)するPHP言語のコードは意外にも簡単。
2021.08.28
先日、高知県はコロナ感染症が111人になったそうです。早くコロナワクチン接種?2回目を打ちたいです、ただファイザー社のワクチンなのでデルタ株のウィルスは軽症化させるだけで無症状や感染しないようにはならないという事です。それでも重症化を防げるので打たないより打った方が良いですね?。なお、混合ワクチン接種が結構無敵だとか?インドではDNAワクチン接種を世界初で承認したみたいですね。新たな変異種も防ぐことが出来れば一気にDNAワクチン接種が世界的に進みそうです。
さて、前置きはここまでとして、数珠繋ぎにTweet(リプライ)するPHP言語のコードは意外にも簡単に書けました、なお、TwitterOAuthというライブラリを使用して呟いています。
作った経緯は数珠繋ぎにする方法などは調べてもヒットしなかったので記載しようと思ったわけです。今回の方法でアファリエイトなどを紹介などや長文のツイートが行えるなどいろいろな用途に使えるかと思います。
※このソースコードはコマンドライン(CUI)から叩かないと(実行)、動かない仕様になっています。
<?php
require_once("../vendor/autoload.php");
use Abraham\TwitterOAuth\TwitterOAuth;
if ($argv[0]) {
require_once "./tw-config.php";
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
date_default_timezone_set('Asia/Tokyo');
$affiliate = json_decode(file_get_contents("./affiliate.json"));
$id = null;
foreach ($affiliate->{date("w")} as $key=>$val) {
$str = $id?array("status"=>$affiliate->{date("w")}[$key]->txt,"in_reply_to_status_id"=>$id):array("status"=>$affiliate->{date("w")}[$key]->txt);
$res = $connection->post("statuses/update",$str);
$id = $res->id;
}
}
{
"0": [
{
"txt": ""
},
{
"txt": "2"
},
{
"txt": "3"
}
],
"1": [
{
"txt": "1"
},
{
"txt": "2"
},
{
"txt": "3"
}
],
"2": [
{
"txt": "1"
},
{
"txt": "2"
},
{
"txt": "3"
}
],
"3": [
{
"txt": "1"
},
{
"txt": "2"
},
{
"txt": "3"
}
],
"4": [
{
"txt": "1"
},
{
"txt": "2"
},
{
"txt": "3"
}
],
"5": [
{
"txt": "1"
},
{
"txt": "2"
},
{
"txt": "3"
}
],
"6": [
{
"txt": "1"
},
{
"txt": "2"
},
{
"txt": "3"
}
]
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
$affiliate, argv, Asia, connection, CUI, date, foreach, gt, json_decode, lt, null, php require_once, quot, TwitterOAuth, txt, use AbrahamTwitterOAuthTwitterOAuth, val, vendor, アファリエイト, コマンドライン,
goo-labのひらがな化API雛形を作りました。
2021.05.17
goo-labのひらがな化API雛形を作りましたので、お裾分けです。YOUTUBEで解説している事を抜粋して記載します、まずAPIとはアプリケーションプログラミングインターフェイスの略です。APIを簡単に解説するとAというデータを送るとAのデータを処理して何らかの結果を返却してくれるサービスを言います。
今回のひらがな化APIは漢字の文字をひらがな(カタカナ)に変換して返却してくれるサービスです。自分が作った部分はひらがな化APIのサーバにデータを送信して返却データをキャッチする部分になります。APIというのはどんなAPIも同じようなものですので、一度、理屈を分かってしまうと簡単なものです。
因みにディファインの部分を自分のAPIに変更してお使いください、尚、コマンドラインから実行するように設計しています。
<?php
define("APIKEY","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
class Hieagana{
public function main($str="漢字が混ざっている文章"){
if(!$str){return false;}
$headers = array(
"Content-Type: application/x-www-form-urlencoded",
);
// app_id(必須項目) アプリケーションID
// request_id リクエストID
// 省略時は"labs.goo.ne.jp[タブ文字]リクエスト受付時刻[タブ文字]連番"となります。
// sentence(必須項目) 解析対象テキスト
// output_type (必須項目) 出力種別
// hiragana(ひらがな化)、katakana(カタカナ化)のどちらかを指定してください。
$params = [
"app_id"=>APIKEY,
"sentence"=>$str,
"output_type"=>"hiragana"
];
$curl = curl_init("https://labs.goo.ne.jp/api/hiragana");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
$output = (object)json_decode(curl_exec($curl));
curl_close($curl);
var_dump($output);
}
}
if($argv[0]){
(new Hieagana)->main($argv[1]);
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
$params, APIKEY, application, argv, array, decode, false, goo.ne.jp, headers, hiragana, katakana, labs, lt, object, php define, quot, VERIFYHOST, youtube, アプリケーションプログラミングインターフェイス, コマンドライン,
ドロップシッピングCSV流し込み開設に向けて。WEB知識のある業界の方オススメします!
2018.07.06
ドロップシッピングCSV流し込みの過程。
ドロップシッピングからCSVをダウンロード、
その後、ヘッダー部分の削除を行い、CSVを10000行単位で
分割する。リナックスのコマンドで行いましたが
PowerShellやフリーソフトでも分離は可能です。
次にDBへ登録を行うプログラミングをPHP言語で記述し
コマンドラインからPHPファイルを叩く。コマンドラインで叩くほうが
処理が早いのでこちらを選びましたが、ブラウザから送信ボタンを押したときに
非同期処理(ajax)を走らせて行う方法もあります。
自分が登録したドロップシッピングのCSV容量は
850MBでした、まぁまぁ多いファイルです、これを一行単位で取り込んで
行くのですが、、、、かなり時間がかかります。
取り込み終わるのに数時間かかりました。
最初、一括CSVで取り込めないかなと思っていろいろ試しましたが515円のサーバでは
無理でしたので、10000処理を行ったら一度、PHPを終了させ
再度、開き次のファイルをパラメーター付きで実行させるシェルスクリプトを
作りました。そちらを叩いて後は終了するまで待つという方法です。
登録したDBから商品の一覧や詳細画面、カテゴリー一覧、
トップページを作らないといけないという作業が残っています。
こちら会社でも使っているSmartyで当初思ったのですが
やめてPHPテンプレートエンジン「Twig」を使用して作ることに決めました。
ここまで来て思ったのは会社での事がかなり役に立つという事です。
ノウハウがあるのとないのとはぜんぜん違うなと思います。
ドロップシッピングが軌道に乗るのかはわかりませんが、
サイトを作るというのは楽しいですね。
ちなみにドロップシッピングのURLは非公開とさせていただきます。
https://youtu.be/rrvL2-jqZ-4
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
CSV容量, PHPテンプレートエンジン, powershell, Smarty, Twig, コマンドライン, サーバ, シェルスクリプト, ドロップシッピングCSV流し込み, ドロップシッピングCSV流し込み開設, パラメーター付き, ブラウザ, フリーソフト, プログラミング, ヘッダー部分, リナックス, 一括CSV, 一行単位,
Node.jsをインストールしてFeedparserを使ってみて
2018.02.01
Node.jsをインストールしてFeedparserを使ってみて
サーバ上でjsを動かす利点はよく分かるのですが、いまのサーバで
jsをガリガリと書いて動かすことはないだろうという事で、コマンドラインから
叩いて動かすぐらいで十分じゃねという結論に至りました。
http-serverというのをインストールするとサーバから表示することも可能なんだってさ。
但しApacheと共存させるにはちょっとした細工が必要です。
ちなみにyum install nodejsでNode.jsはインストールできます。
あとはnpmを使用してnpm install -g http-serverでインストールし http-serverとかすると
http上でNode.jsが動いたりします(コードの記述が必要)。
今回、Feedparserを使用するのに参考させてもらったサイトの
リンクを貼っときます。
ほぼコピペで動きました(._.)
http://phiary.me/node-js-feedparser-rss-json/
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
B075R3WRXM, Feedparser, g http-server, http-server, node.js, npm install, yum install nodejs, コード, コピペ, コマンドライン, サーバ, サーバ上, 但しApache, 利点, 細工, 結論, 記述, 超入門,
テンソルフロー的な画像解析。
2017.09.03
Tensorflow(テンソルフロー)的な画像解析をやってみました。
コードはオープンで公開する程のものではないので仕組みだけ説明します。
python classify_image.py --image_file test11.jpg.webp
Pythonのモジュールの上記(classify_image.py)のファイルをパラメータ渡しでキックしているだけです。
モジュールはグーグルさんが書いているのを貰ってきただけです、何とも簡単に
画像を解析してくれます。ここまでたどり着くまでには長い道のりがありましたが
手順を教えます。
まず、Tensorflowをインストールして置きます。これはググれば見つかります。
TensorBoardで可視化とかしていませんので割愛します。インストールして
任意の場所に下記のモジュール(models repo)をダウンロードします。
https://www.tensorflow.org/versions/master/tutorials/image_recognition
ダウンロードしたファイルを配下に画像を置けばおわり、その名前と共にファイルをキックして
あげるだけでOKのはずが・・・・。OKじゃねぇ、そう何か動かない。
構文間違っているじゃねぇみたいなエラーを吐くのでファイルを修正します。
この配下に「classify_image.py」ファイルがありますのでこちらを修正します。
紫で囲っている部分を削除してしまいましょう。実際、自分は削除はしませんでした。
あまりPythonの構文を分かっていないので、コマンドラインからは不必要かもしれないけれど・・・。
WEB上で動かす(呼び出す)際は必要かもしれないのでコピってコメントアウトしてます。
コメントアウト後、PHPの関数、execを使い外部コマンドでPythonを実行してみると動きます。
動いた時は感動します。ひとりニヤニヤしてました。
返却されたものを表示しているだけ・・・なんですけどね。
https://www.youtube.com/watch?v=96-5oYVi4Pg
サンプルサイトはこちらです。
http://zip358.site/labo/
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AM, exec, image_file test11.jpg, models repo, python classify_image.py, TensorBoard, tensorflow, エラー, グーグル, コマンドライン, サンプルサイト, テンソルフロー, テンソルフロー的, パラメータ渡し, ファイル, モジュール, 下記, 外部コマンド, 構文, 画像解析, 配下, 関数,
CSVのデータ数万行とかをVBAでデータを加工するよりも
2016.05.30
CSVのデータ数万行とかをVBAでデータを加工するよりもPowerShellから加工するべし、、。
まず、いま勤めてる会社、WEB会社なんですが
WEBシステムに使うデータの加工をする機会が結構あったりします。
時には数万行とかのデータを取り込んで
加工することがあるですね。
今まで数万行のデータは分割して
処理をしていたのですが、PowerShellで取り込んで処理する
方法があるみたいなので、これからはソチラで
加工しようかなとか思っています。
ちなみにExcelやPHPだとMバイトのデータを
扱うと処理が落ちる場合が結構あります。
とくにPHPだとファイルをアップロードする場合や
扱えるメモリの設定により処理落ちする事は
多々あります。
なので、PHP側でどうしても
処理を行いたい場合は事前にファイルを分割するか、
処理する時点でshellなどを使いコマンドラインで
ファイルを分割するかなどの方法を
取らないといけないのです。
ファイルをアップロードする時点で
処理を行うか前もって処理を行なったデータを
SQLで読み込むかなど、いろいろな方法があります。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
CSV, Excel, Mバイト, php, powershell, SQL, VBA, WEBシステム, コマンドライン, ソチラ, データ, データ数万行, ファイル, メモリ, 事前, 処理, 処理落ちする事, 加工, 方法, 時点,