PDFelementを使用して画像ファイル内の文字をテキスト化する方法

OCR機能を持つソフト「PDFelement」を使用して画像ファイル内の文字列をテキストファイル化する方法です。

「PDFelement」には無料トライアル版もあるので画像ファイルからテキストファイルやExcelファイルへの変換は無料トライアル版でも十分可能となってます。

「PDFelement」のダウンロード

「PDFelement」を使用して画像ファイル(png)の文字をテキストファイル化する手順

今回は以下の画像ファイル(png)をテキスト化してみます。

  1. PDFelementを起動し、「ファイルを開く」を選択します。
  2. ファイルの種類がpdfになっているので「すべてのファイル」へ変更して変換したい画像ファイルを選択します。
  3. プロ版機能の購入案内画面が表示されるので「無料トライアルを続ける」を選択します。
  4. 変換したい形式のファイルを選択します。今回はtxtファイルへ変換したいので「テキストへ」を選択します。
  5. 再びプロ版機能の購入案内画面が表示されるので「無料トライアルを続ける」を選択します。
  6. pdfファイルへの保存確認が表示されるので保存したい場合は「はい」を、不要であれば「いいえ」を選択します。
  7. 名前を付けて保存画面が表示されるので保存後のファイル名を指定して「保存」を選択します。
  8. 正常に変換されると以下に様に「正常に変換されました」と表示されます。「開く」ボタンを選択すると変換後ファイルを開くことが出来ます。
  9. 変換後ファイルを開くと以下の様に画像内も文字がテキスト化されてるのが確認出来ます。やや精度は微妙なので見直しは必須ですが、文字数が多い画像ファイルなどをテキストファイル化したい場合などには結構使えそうです。

Excel:RANK関数で順位を求める方法|同順位・連番処理・応用例まで徹底解説

Excelで順位を求めるにはRANK関数を使用することで可能となります。

RANK関数は「=RANK(数値, 参照, [順序])」の書式で入力します。

第3引数の順序には0(降順で並び替えて数値の大きい方から数えた順位) or 1(昇順で並び替えて数値の大きい方から数えた順位)を指定してます。省略した場合は降順での順位が表示されます。

1.RANK関数を使用して順位付けする例

  • 以下の例ではC2セルの書式へ「=RANK(B2,B$2:B$5,1)」を入力しています。

2. 同順位がある場合の扱い

「Excel の RANK 関数」を使うと順位が出せますが、同じ数値が複数ある場合、“同順位”となってしまい次の順位が飛ばされる仕様です(例:100 点・100 点・90 点 → 両100点が「1位」、90点は「3位」)。
この処理を “連続した順位” にしたい場合は以下のような式を併用できます:

上記は「現在行までに同じ点数が出た回数」を加算して、連番で順位を出す方法です。

解説

  • RANK(B2, B$2:B$5, 0):降順での順位を求める

  • COUNTIF(B$2:B2, B2):その点数が出た行数(上から順に)を数える

  • これらを組み合わせることで、同点なら「1位・1位・2位…」という形にすることができます。

サンプル

氏名点数順位(通常)順位(連番処理)
A10011
B10012
C9033
D8044

このように順位を整えたい場面では、上記式が役立ちます。


3. 順位 + タイ/位を「〇〇位」形式で表示する

順位の数字だけでは分かりづらいという場合、セル内で「1 位」「2 位」と“位”を付加して表示させると見栄えも良くなります。例えば、セル C2 に順位が出ているとして、次のように書けます:

さらに、順位によって色を変えたい場合(例:1 位→金色、2〜3位→銀・銅、4位以下→通常)には、条件付き書式を使うのが効果的です。

  1. 順位列を選択し、メニューから [ホーム] → [条件付き書式] → [新しいルール] を選択。

  2. “セルの値” → “次の値に等しい” → 「1」と入力 → 書式で塗りつぶしに金色を設定。

  3. 同様に「2」「3」で銀色・銅色を設定。
    これにより、順位が高いほど強調され、視覚的評価もしやすくなります。


4. 別シート/他列の参照を含む順位付け

大量データを処理する際、点数データが別シート/別列にあるケースがあります。その場合も RANK 関数は以下のように使えます。

このように、シート名を付加して参照範囲を指定すれば、データが別シートでも問題ありません。

また、対象の範囲が列全体(例:B列すべて)で、今後データが追加されることが確実な場合には、次のように「テーブル形式」に変換しておくと便利です。

  1. 点数の表全体を選択 → [挿入] → [テーブル]。

  2. テーブルに名前を付ける(例:tblScores)。

  3. 順位計算式を以下のように書く:

 
=RANK([@点数], tblScores[点数], 0)

このように “構造化参照” を使うことで、行が追加されても範囲が自動拡張され、式を再設定する必要がありません。


5. エラー/意外な結果を避けるためのチェックポイント

  • 空欄セルがある場合:参照範囲に空欄があると、予期せぬ順位(0や#N/A)が出ることがあります。空欄を除外したい場合は IF 関数で空欄なら空白返すなどの処理を追加します。例:

  • 文字列が混じっている場合:数値として扱われない文字列(例:「80点」など)があると、順位から除外されるか誤計算を招く恐れがあります。事前に VALUE 関数や 数値変換を行っておくと安心です。

  • 降順・昇順の誤指定:第3引数に「0(または省略)=降順」「1=昇順」を指定する点を誤ると、「点数の小さい方を1位にする」など逆の結果になることがあります。意図を明確にしておきましょう。

  • 重複データによる順位飛び:先に紹介した通り、同点がある場合には順位が飛びます。分析用途で「飛び」を避ける必要があるなら COUNTIF 併用の式を使ったほうが良いです。

  • データ追加・編集後の式の影響:データを追加・削除した際に順位表全体が意図せずずれてしまうことがあります。特に「相対参照/絶対参照」やテーブル化の有無を、あらかじめ確認しておくと安心です。


6. 実践的な活用シーンと応用アイデア

6-1. クラス/グループ別順位を出す

部門やクラスが複数ある中で「クラス内順位」や「部門内順位」を出したい場合、「条件付き RANK + SUMPRODUCT/COUNTIFS など」の組み合わせで実現できます。例:クラス別の点数表が Sheet1 にあって、クラスは列 C、点数は列 D の場合:

※ Excel の FILTER 関数が使えるバージョンの場合。旧バージョンの場合は SUMPRODUCT / COUNTIFS で代用可能です。

6-2. 順位をグラフで可視化する

順位が出たら、グラフ化してみると傾向把握がしやすくなります。例:順位変化を折れ線グラフにして「月ごとの点数アップ・ダウン」や「部門別・クラス別の成績変化」を視覚的に追うと、Excel資料としての説得力も増します。

6-3. 順位とスコアを使ったダッシュボード化

Excelの「ピボットテーブル+スライサー」と組み合わせると、例えば「今年度/昨年度」「クラス別/部門別」「男女別」のフィルタ付きダッシュボードが簡単に作れます。「トップ10だけ表示」「下位5だけ抽出」「点数の分布と順位の相関」などを可視化することで、管理資料やプレゼン資料としても活用可能です。


7. まとめ

「RANK 関数」だけでも順位を出すことは簡単ですが、実務レベルで使うには “同順位の扱い”“データ追加への耐性”“別グループ・条件での順位付け” といった点に注意が必要です。
今回紹介した方法を活用すれば、Excelでの順位付けがより自由度の高い形で実現できます。ぜひ、日常の資料作成や分析業務にお役立てください。

Windowsで使用中のポート番号を確認する方法

Windowsで現在使用中のポート番号を確認する方法をメモしておきます。

使用中のポート番号を確認する方法

  1. コマンドプロンプトを起動してコマンド「netstat -ano」を入力してEnter。
    netstatコマンドのオプションの意味は以下の通り。 
    オプション説明
    aすべてのネットワーク接続を表示する
    nDSN逆引きを行わない
    oプロセスIDを表示する
    p プロトコル指定したプロトコルの接続のみ表示する
    プロトコル:TCP, UDP, TCPv6, UDPv6
    rルーティングテーブルを表示する
    sプロトコルごとの統計情報を表示する
    ?コマンドのヘルプを表示する
  2. 以下の様にローカルアドレスの「:」の右側に表示されているのがポート番号となります。

プロセスID(PID)から実行中のサービス名を特定する方法

上記でプロセスID(PID)を特定出来たら該当するサービス名を特定することも出来ます。

例としてポート番号「1521」のPID「1604」がどのサービスで使用されているかタスクマネージャーで確認してみましょう

  • 以下の様にタスクマネージャーのサービス一覧で該当するPID「1604」のサービス名が「OracleOraDB18Home1TNSListener」であることが確認出来ました。

 

 

Excel:複数の図形(オブジェクト)の配置を揃える方法

以下の様にExcelで複数の図形(オブジェクト)の配置がバラバラになっている時に配置をきれいに揃える方法についてメモしておきます。

複数の図形(オブジェクト)の配置を揃える手順

  1. ホームタブの右端にある「検索と選択」を選択して「オブジェクトの選択」を選択します。
  2. 配置を揃えたい図形(オブジェクト)を選択します。
  3. 図形(オブジェクト)を選択後、書式タブ ⇒ 配置を選択し、揃えたい条件を選択します。今回は「左揃え」を選択します。
  4. 以下の様に選択した図形(オブジェクト)がきれいに左揃えされているのが確認出来ます。

今回は左揃えを例にしてみましたが、配置のメニューで右揃えや上揃え、下揃えなど色々選択出来るので自由に配置を調整することが出来ます。

Oracle:年、月、日、時、分、秒以下を切り捨てて取得する方法

OracleではTRUC関数を使用することで年、月、日、時、分、秒以下を切り捨てて取得することが可能となります。

使用例

サンプルテーブル「BIRTHDAY」

クエリー(SQL)

  • BIRTHDAYテーブルのUPDATE_DATEに対してTRUNC関数を使用した例となります。第2引数へformatを指定することで指定した単位で切り捨てた値を取得することが出来ます。
  • formatの種類 
    format説明
    YYYY年まで取得して月日時分秒を切り捨て
    MM年月まで取得して日時分秒を切り捨て
    DD年月日まで取得して時分秒を切り捨て
    HH年月日時まで取得して分秒を切り捨て
    MI年月日時分まで取得して秒を切り捨て
     

出力結果

 

Oracle:管理者ユーザー「SYS」と「SYSTEM」のデフォルトパスワード

Oracle 初期パスワードとは?

Oracle 初期パスワードを確認したい/変更したい場合、多くのバージョンで仕様が異なるため注意が必要です。この記事では Oracle の初期アカウント(SYS・SYSTEM)について、パスワードの扱いと安全な運用方法を解説します。

SYSユーザーのデフォルトパスワード:change_on_install

  • sysユーザーでのログイン例です。

SYSTEMユーザーのデフォルトパスワード:manager

  • systemユーザーのログイン例です。

Oracle:管理者ユーザー「SYS」と「SYSTEM」のデフォルトパスワード

ユーザー初期パスワード例備考
SYSchange_on_installデータディクショナリを管理する最上位アカウント
SYSTEMmanager一般的な管理作業に使用可能な補助アカウント

セキュリティ上の注意点

変更必須

デフォルトのままでは外部からの攻撃に悪用されやすいため、必ずパスワード変更を行うこと。

最近の Oracle バージョンでの違い

  • 11g 以降:インストール時にユーザーが必ずパスワードを指定。

  • 12c 以降:パスワードポリシーが強化され、英数字・記号混在の複雑なものを要求。

  • 19c/21c:初期アカウントはロック状態になっている場合も多い。

補足:運用時の留意点と実践アドバイス

本稿でご紹介したように、デフォルトユーザー「SYS」「SYSTEM」の初期パスワードが設定されたまま運用を開始することは、非常に高いセキュリティリスクを伴います。特にネットワークに接続された環境やクラウド/仮想化されたデータベースでは、外部からの侵入・横展開の入口になり得ます。

そこで、実運用にあたっては以下の点もあわせてご検討ください:

  1. パスワード変更/ロックダウンの徹底
    ・前述の SQL コマンド(ALTER USER … IDENTIFIED BY …)で直ちに適用するだけでなく、変更したパスワードは社内ポリシーに基づき「使い捨て・非共有」設計としてください。
    ・可能であれば、管理者ユーザーを使用せずに特権を限定した別ユーザーを作成し、SYS/SYSTEM アカウントは緊急対応用にのみ残すと良いでしょう。

  2. アクセス制御・監査ログの有効化
    ・データベースに対するアクセスを IP・ネットワーク・時間帯別に制限することで、万一パスワードが流出しても被害を抑制できます。
    ・また、誰がいつどのユーザーでログイン/DDL/DMLを実行したかを追えるように監査ログを有効化することも推奨されます。

  3. バージョン・ポリシーの理解
    ・本記事でも触れられている通り、Oracle Database のバージョンによって初期アカウントの仕様(パスワード必須・アカウントロック等)が異なります。例えば 11g 以降、12c/19c ではより強固なパスワードポリシーと自動ロック機能が導入されています。 Write Remember
    ・そのため、運用している環境のバージョンを把握し、初期設定のまま稼働していないか定期的に確認することが重要です。

  4. 定期的なレビューと脆弱性対策
    ・初期アカウントだけでなく、標準サンプルスキーマやテスト用ユーザーも残していないかチェックしてください。攻撃者は「資料通りに」残された穴を狙う傾向があります。
    ・さらに、データベース自体だけでなく OS/ミドルウェア/接続前段のネットワーク構成も含めた総合的なセキュリティレビューを年1〜2回実施することを推奨します。

  5. 万一のインシデント対応準備
    ・万が一、アカウントの不正使用やパスワード流出が疑われた場合の初動手順をあらかじめ策定しておくと、被害の拡大を防ぐことができます。
    ・例えば、アカウントの即時ロック/パスワード強制リセット/ログの取得・分析/改ざんの有無確認などを、運用マニュアルに定義しておくと安心です。

最後に、本稿の内容をただ「変更・実施すれば終わり」とせず、定期的な「運用の振り返り」と「改善サイクル」の一部として組み込むことが、真に安全なデータベース運用の鍵になります。ぜひ、日常運用の中で今回の注意点を意識し、安心・安全な環境構築に役立ててください。

リモートデスクトップでの接続前に事前に接続済ユーザーの有無を確認する方法

複数人開発メンバーがいる状況などで共通で使用しているアカウントでリモートデスクトップ接続する可能性がある場合、リモートデスクトップでの接続は基本後勝ち方式になってしまうため、先に誰かがリモートデスクトップで接続していると後発ユーザーが権限奪ってしまい先に使用している人へ迷惑をかけてしまう可能性があります。

なのでリモートデスクトップで共通で使用しているアカウントでログインする場合は事前にアクティブ状況は最低限確認しておきましょうというお話。

事前に接続先サーバーへのログインユーザーのアクティブ状況を確認する方法

  1. コマンドプロンプトを起動して「qwinsta /server:[接続先のサーバー名]」を入力して実行します。
  2. 以下の様に状態へ「Active」と表示されていれば該当ユーザーでログイン中となっているのが確認出来るので、そのユーザーでリモートデスクトップ接続する前に周囲にいつまで使用予定なのかなどを確認してから使用すると不要な摩擦を生むのを回避出来ます。

補足:運用時の注意点

  • 管理者権限が必要
    接続中ユーザーを確認するには管理者権限が必要な場合があります。特に query user コマンドや qwinsta コマンドを利用する際は、一般ユーザー権限では表示されないことがあります。

  • 強制ログオフのリスク
    他ユーザーが接続中の状態で強制的にログオフさせると、未保存データが失われる恐れがあります。運用ルールとして、必ず事前に通知・了承を得てから切断するようにしましょう。

  • 複数ユーザー環境での考慮
    Windows Server 環境などでは複数ユーザーの同時接続が可能な場合もありますが、通常の Windows 10/11 Pro では基本的に 1 ユーザーのみのリモート接続が許可されます。環境ごとに仕様を確認しておきましょう。

  • 自動化の工夫
    バッチファイルや PowerShell スクリプトに query user を組み込むことで、接続前にワンクリックで確認できる仕組みを整えると便利です。例えば、以下のようにログイン状況を出力する簡易スクリプトを作成できます。

     

SQL:システム日付と誕生日を元に年齢、誕生日までの月数、日数を表示する方法

SQLでシステム日付、誕生日を使用して年齢、システム日付~誕生日までの月数、日数を取得するSQLをメモしておきます。

以下はOracleでの実行例となっています。

サンプルテーブル

「BIRTHDAY」テーブル

【Oracle】システム日付と誕生日から年齢、誕生日までの月数、日数を表示する例

クエリー(SQL)例

実行結果

Excel:郵便番号へハイフンを挿入する方法

Excelで郵便番号へハイフンを挿入するにはREPLACE関数を使用することで可能です。REPLACE関数は本来置換用の関数ですが第3引数へ0を指定することで文字列の追加も可能となります。

REPLACE関数を使用して郵便番号へハイフンを挿入する例

  • 以下の例ではB2セルへ「=REPLACE(A2,4,0,”-“)」を入力してA列の値の4桁目に”-“ハイフンを挿入しています。
  • 第3引数へ0を指定すると第2引数の文字の直前に第4引数へ指定した値が挿入されます。

SQL:UPDATE と JOIN を使用してレコードを更新する方法

UPDATEで他のテーブルと結合(JOIN)した結果に対してのみ更新を実施したい場合、SQL ServerやMySQL、PostgreSQLではUPDATE文内に直接JOIN句を記載可能ですが、Oracleでは副問合せで結合することでJOINした結果に対して更新することが可能となります。

サンプルテーブル

「GOODS」テーブル

「GOODS_TYPE」テーブル

【Oracle】UPDATE文でJOINを使用して更新する例

クエリー(SQL)例

  • 以下の例ではGOODS_TYPEテーブルに存在するGOODS_CODEと一致するレコードのみGOODSテーブルのPRICE項目を更新しています。

実行結果

  • 以下の様にGOODS_CODEが一致しているレコードのみ更新されていることが確認できます。

 

【SQL Server、MySQL、PostgreSQL】UPDATE文でJOINを使用して更新する例

クエリー(SQL)例

  • SQL Serverなどでは直接UPDATE文内にJOINを指定可能なので以下のような記載でもエラーにはならず更新されます。