投稿

12月, 2025の投稿を表示しています

PDFからTextを作成する方法

 1.概要 PDFからTextを切出したい事があります。不思議なことにPDFのテキスト部分をドラッグ&ドロップでテキストに取れることもあります。しかし、何も操作できないこともあります。少しネットで調べて、PDFからTextの作成方法を実施したのでその内容を記述します。 2.詳細 (1) PDF内部にText文書がある場合 PDFには種類がありますが、PDF内部にText文書があるものと、そうではないものがあります。PDF内部にText文書があるものは、比較的かんたんにPDFからTextを作成できます。 ubuntuでは、pdftotextコマンドを利用できます。 (2) PDF内部にText文書がなく、イメージファイルの場合 pdftotextを実行しても何も出力されない場合が該当します。 この場合はPDFをイメージファイル(png)に変換して、OCRソフトでTextにします。 PDFをPNGに変更するためには、pdftoppmを利用します pdftoppm -png xxxxxx.pdf yyyyyy yyyyyy.zzzzz.pngが作成されます。 pngをOCRソフトでTextを切り出すには、tesseractを利用します sudo apt install tesseract-ocr sudo apt install tesseract-ocr-jpn tesseract yyyyyy.zzzzz.png output -l jpn output.txtが作成されます。 参考 pdftotext - PDFからテキストを抽出 https://note.cman.jp/pdf/poppler/pdftotext/ pdftoppm - PDFの画像変換(ppm) https://note.cman.jp/pdf/poppler/pdftoppm/ 画像から文字を瞬時に読み取る!Tesseractとpytesseractの驚異の力【Python】 https://qiita.com/ryome/items/16fc42854fe93de78a23

influxDBの全件読込の性能試験をしました

 1.概要 前回、influxdbとpostgresqlのcsvからのinsert性能比較をしたので、今回はselectで全件を読む性能比較をしてみました。select * from tableの実行時間を比較すると良いと考えたのですが、influxdbで実行するのが案外難しい。その内容を記述します。 2.詳細 influxdb v2を利用しています。csvからのinsertはinfluxコマンドを利用しました。そこで同じようにinfluxコマンドを利用した登録データ全件の参照処理が案外難しい。登録したcsvと同じ出力を得ることが難しいとは思っていなかったのでショックでした。select count(*) from tableのようにデータ件数をカウントすることも難しい。GoogleAIに尋ねて色々試したのですが、Postgresqlと比較する良い手段が見つからなかったので、influx v1 shellを利用することにしました。(※ GoogleAIの参考回答例参照) influxdb v2でinflux v1 shellを利用するとselect * from tableが利用できます。しかし、対話モードでしか動作しないために、shell化して実行時間計測に課題がありました。仕方なく、時間計測処理を別途作成して、手作業で起動停止をすることにしました。この辺もGoogleAIに尋ねたのですが、Docker Containerを利用していることで制限があり、解決できませんでした。 データは前回と同じ形式で新しく作成しました。 データ項目は下記5項目で、データ件数は200万件です。 データの例 date       unixtime   number  real      real    2025-10-12,1762253561,2000000,0.0239312,0.956495 (1) influxdb Tagなし Insert処理  35秒 Select処理  25秒 (2) influxdb Tagあり(条件は前回と同じ) Insert処理  100秒 Select処理  34秒 実行したマシンは同じi3-7100環境です。処理時間に...

influxDBとPostgreSQLのcsvからのinsert性能試験をしました

1.概要 前回influxdbの概要をネットで調べたので、実際にpostgresqlと性能評価をしました。特に気になった点は100万件の壁があるか否かです。私が評価した範囲では最良の条件であるdate time以外のtag(2次キー)項目がない場合でもpostgresqlに及びません。また、100万件の壁はあるようですが、postgresqlとの性能差はもっと基本的な問題のような気がします。その内容を記述します。 2.詳細 試験環境はi3-7100, Memory 16GB, SSD 500GB, ubuntu-22.04です。 influxdb(v2),postgresql(v15)をdockerコンテナで動作して試験をしました。 データは下記5項目です。 データの例 date       unixtime   number  real      real    2025-10-12,1762253561,2000000,0.0239312,0.956495 データ量は10,50,100,200万件のデータで処理をしました。 データのinsert試験のみ実施、方式はcsvからのimportです。 (1) influxdbでunixtimeだけがキーでtag項目なし 10万件     2秒 50万件     14秒 100万件    18秒 200万件    25秒 (2) influxdbとして一番厳しいnumber項目をtagに指定 10万件     6秒 50万件     25秒 100万件    50秒 200万件    120秒 (3) 比較としてpostgresqlでprimary keyをunixtime、numberをindexに指定 この条件は上記(2)と同じです。 10万件     0秒(1秒以下) 200万件    7秒 個人的な主観ですが、時間を積み重ねたVersion差が性能差になっている気がします。 insert性能では、influxdb v2ではpostgresql v15に歯が立ちません。 参考 InfluxDB https://ubuntults.blog.fc2.com/blog-entry-233.html

UbuntuをJSTからUTCへtimezone変更する手順

 (1) 概要 aws環境はtimezoneがUTCに設定されています。開発用途のPC(ubuntu)は通常はJST環境のため、時刻が合わないで困ることもありました。例えば、日替わりなど日付が変わる処理が存在する場合、UTCとJSTで時刻が異なるために9時間の時間差が発生するので、処理ロジックにTimezone認識が必要です。PC(ubuntu)をUTCに変更すると問題は解決できそうなので試してみました。 (2) 詳細 参考資料に沿って確認と設定をします。 date timedatectl | grep 'Time zone' と実行して、Time zone: Asia/Tokyo (JST, +0900)を確認します sudo timedatectl set-timezone UTC でtimezoneをUTCに変更します。 date timedatectl | grep 'Time zone' と実行して、 Time zone: UTC (UTC, +0000)を確認します。 参考 Linux(Ubuntu)でタイムゾーンを変更する方法 https://qiita.com/yousan/items/5df43b3e6c210b4bbd3b