はじめに
「せっかく徹夜で書き上げたレポートをスキャンしたら、文字が薄すぎて読み取れない…。」
そんな悲劇、ありませんか?
教授からは「判読不能につき再提出」の非情な宣告。PDF提出するくらいなら
最初からWord、Excelで書かせてくれればいいのに、なぜか指定される生協のレポート用紙。
本当に2026年なのか。
手書きしたものをわざわざPDFにして提出させるのはなぜ。
もう一度ボールペンでなぞり書き(二度書き)なんてしたくないですよね。
そこで、 「筆圧をデジタルでブーストする」 ツールを作りました。
作ったもの:PDF Text Enhancer
PythonとOpenCV、PyMuPDFを使って、PDF内の「薄い黒」を検出し、力強い文字へと置換します。
さらに七色に輝くレポートにすることで高評価?も間違いありません。
(手書き文字で検証済みですが うすい灰色の文字色の文書で使用例をご紹介します。)
リポジトリを公開しておきます。
主な機能
-
黒の強調(筆圧救済): しきい値を調整して、鉛筆の薄い文字をクッキリさせます。
-
カラー保持: 赤ペンで入れられた修正や注釈は消さずに保護します。
-
ネタ枠モード:
- 青焼き風: 設計図のようなレトロな雰囲気に。
- レインボーモード: レポートがゲーミングPCのごとく七色に輝きます(※提出は自己責任)。
技術のポイント
-
LAB色空間の活用: 明度(L)チャンネルに対してCLAHE(制限付き適応ヒストグラム平坦化)を適用することで、背景のノイズを抑えつつ文字の輪郭を際立たせています。
-
HSVによる色保護: 彩度(S)を見て、文字ではない「色付き部分」を判定。黒強調の巻き添えで色が潰れないように処理しています。
-
GUI: 忙しい学生が直感的に使えるよう、Tkinterでリアルタイムプレビューを実装しました。
実行画面 スキャンしたPDFを読み取ります。(絶望)

↓ 筆圧ブースト!

↓ さらに目を引くレポートにすることも

判定のロジック
-
彩度(S)をチェック: 鉛筆の「黒」や「グレー」は、彩度がほぼゼロです。
-
マスク作成: 一定以上の彩度(S > 50など)がある場所を「これは意図的なカラー書き込みだ」と判定し、マスク(保護領域)を作ります。
-
合成: 文字強調処理をした画像に対して、この「カラー部分」だけを元の画像から上書き(または別途明るく補正して合成)します。
これにより、「鉛筆の文字だけが濃くなり、赤ペンは鮮やかなまま残る」 という、実用性の高い処理が実現できています。
まとめ
技術は、理不尽な「アナログ縛り」を打破するためにあります。
二度書きする時間があるなら、その時間でPythonを書きましょう。