トップ 最新 追記

その他雑多なこと(tDiary版)

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|12|
2012|01|02|03|04|05|06|07|

2012/01/01 [日] [長年日記]

_ [PC] 起動不可

自作7号機、一日動かしていたらハングしてた。そう言えば昨日はいつのまにかシャットダウンしてたっけ。

リセットボタン押しても起動せず、電源落としたらファンは回れど起動音もしない。ビデオカードかマザーボードか両方か。

組んで6年ほとんど毎日使ったのだから寿命かもしれない。

_ 仕事はじめ

でした。特に問題もなく済んでなによりでした。

本日のツッコミ(全2件) [ツッコミを入れる]

_ いしだゆうすけ [>組んで6年ほとんど毎日使ったのだから寿命かもしれない。 寿命かどうかはともかくじゅうぶん元は取ったといえそうです..]

_ 竹内 一詔 [Sun IPXの筐体に入れて、Solaris7動かしたりしたので元は十分とれました。常用したのはWindowsでした..]

本日のリンク元 | 30 | 10 | 7 |

2012/01/06 [金] [長年日記]

_ [Net] mixiサントリーみんなのまちプレゼント当選

CCレモン500ml6本当りました。

当たるものなんだなぁ。

本日のリンク元 | 7 | 1 | 1 |

2012/01/08 [日] [長年日記]

_ [PC] 代替機購入

Windowsデスクトップがないのは不便、さりたて新品を購入するのも組むのもちょっとタイミングが良くない。

壊れたのはマザーボードと当たりをつけてCPUとメモリを再利用する前提で中古デスクトップを探すことにした。

使っているのはPentium4 530J とDDR2 533(PC2-4200)の1GB×2本のメモリ。Prescott世代のCeleron搭載機はビジネス向けが中古市場に放出されたようで随分安く入手できるようだ。

秋葉原で中古屋を回ったらNEC Mate MY26X/R-Jのメモリ1GB搭載、OSリカバリ済が3980円で見つかった。CPU:CeleronD331 メモリPC2-4200とPOPに書いてある。WikipediaでCeleronの型番見てLGA775とFSB533MHz対応なのを確認して購入。

帰宅してメモリとCPU交換しようとしたらメモリのラベルにDDR 400の文字。うわ、騙されたorz メモリ再利用できないじゃん。1GB積んでいるからそれでガマンするか。CPUは交換して使えるのは確認できたから良しとするか。HTの有無は大きいから。

今まで使っていたHDDで起動しようとしたらブルースクリーンで止まる。セーフモードでも同じ。中古PCに付属のOSで起動してディスクの検査を行うが問題は検出されない。修復インストールするかねぇ。

本日のリンク元 | 6 | 6 | 3 |

2012/01/09 [月] [長年日記]

_ [PC] 代替機調整

起動しなくなったHDDを修復インストール。手元にあったのはXP SP2のメディアだったので、それで修復。NICを認識しないので、別のマシンでドライバをダウンロードして設定した。

その後SP3を当てて120個ほどの修正パッケージ当ててようやくOS修復完了。ハードが大きく変更となるので、電話認証が必要だった。仕方ないね。

これで通常復帰かと思ったら、ノートンインターネットセキュリティもインストール数違反を言い出す。3台まで可能なはずで、現在2台しか使ってないのだけれど。

アンインストールして最新版をインストールし直しても状況変わらず。サポートページからチャットで対応を依頼したら、再インストールを繰り返したため、上限に達したのだそうだ。リセットしてもらい無事にライセンス認証完了した。

DDR400のためか、1GBのためか、動きがもっさり。ほとんどはMacに移行したので、今後はPDF化専用かなぁ。

本日のリンク元 | 6 | 2 | 1 |

2012/01/13 [金] [長年日記]

_ 帰省終了

1月10日から帰省してました。

導入したPocketWiFiの効力は絶大でメールチェックやウェブチェックでは不満なし。動画みたりすると別かもしれないけれど。EMチャージの7日間定額プランにしたので、後3日は使えるなぁ。

帰りの飛行機は機材変更で30分程遅れて出発。帰宅ラッシュを免れると思っていたのに無理っぽい。仕方ないのでリムジンバスで比較的近いところまで移動です。

本日のリンク元 | 9 | 9 | 7 |

2012/01/20 [金] [長年日記]

_ [iOS] レシート管理

iPhoneを持って考えたのはレシートを撮影したら家計簿に反映してくれるアプリはないだろうかということ。

Android向けにはあるようだが残念ながらiOS向けにはない模様。メディアドライブが移植してくれるのが一番いいのだけど。OCR製品は散々な評価がついているなからなぁ。

家計簿は無理でもレシート管理の入力デバイスとして使うのはありかな、と思いやってみた。

どうせならOCRもかかって後で検索できるといいよね、という訳でGoogleDocsとEvernoteを使い比べることにした。

Evernoteのアカウントを作ってEvernoteアプリから撮影して送ってみたところ数日分のレシートで無料分の容量を使いきってしまいそうな感じ。またOCRも数時間待つ。

待っている間にGoogleDocs。公式アプリはないもののメモアプリには送信可能なものもあるらしい。Rainbow note liteを使ってみる。メモに貼り付けて送信する形だ。残念ながらうまくOCRはかからない。メモだからかもしれない。画像そのものを送るなら違うかも。

簡単な画像処理ができてEvernoteやGoogleDocsに送信できるアプリ、ということでJotNotScannerを使ってみる。台形補正や2値化など簡単な処理ができてどちらにも送信可能。容量もかなり減るのでこれならEvernoteでも大丈夫かな。

GoogleDocsは送って直ぐにOCR処理がかかるようだが数字の一部だけ。大半は処理できない。Evernoteは検索で見つかるのでOCRはうまくいくらしい。ただ外に取り出そうとするとえらく手間がかかるようだ。

レシートをもらったらすぐに撮影して空き時間にJotNotで処理、一日一書類で束ねたらEvernoteに送るようにするかな。

今までレシートをドキュメントスキャナで取り込みPDFにしていたのだけど、そのバックアップの位置づけでいいか。

_ [健康]献血

成分献血をした。去年の8月以来なので久しぶり。

止血方法が変わって不織布包帯での圧迫になったそうだ。検査用採血の方は変わらず止血バンド。

本日のリンク元 | 5 | 2 | 2 |

2012/01/23 [月] [長年日記]

_ [PC] メモリ増設

同僚に代替機を買った時の失敗話をしたらメモリを譲ってくれることになった。

PC-3200の512MB2枚という話だったのだけど1GB2枚だった。嬉しい誤算。元からの1GBと合わせて3GBになりようやく普通に使えるようになった。

本日のリンク元 | 8 | 1 |

2012/01/28 [土] 長かった…… [長年日記]

_ 朝、普通に出勤して帰宅したら日付が変わっていたorz

本日のリンク元 | 8 | 4 | 2 |

2012/01/31 [火] [長年日記]

_ [PC][自炊] コラムページテキスト2値化フィルタ

GIMP2.6.11向けにscript-fuで作成。写真とテキストが配置されているページでテキスト部分は2値化して、写真部分はそのまま残す。

写真部分の判定は2値化して黒くなった部分が多いところを写真と判定している。写真と判定された部分はFuzzy選択して選択部分に外接する矩形として処理。写真部分の判定で細かく領域選択して領域内の黒の割合を見ているので、時間がかかるのが難点。また、白っぽいところも写真と判定されない。

BWthreshold:2値化するときの閾値

check-step:写真判定用の領域サイズ(pixel)

flame-size:周りの余白部分のサイズ(pixel)白で塗りつぶす

(define (docscan-file-text-enhance filename bw_threshold check-step flame)
  (let* (
      (outfilename (string-append filename ".png"))
      (xcffilename (string-append filename ".xcf"))
      (img (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
      (layer (car (gimp-image-get-active-layer img)))
    )
    (docscan-text-enhance img bw_threshold check-step flame)
    (gimp-xcf-save 0 img layer xcffilename xcffilename)
    (set! layer (car (gimp-image-merge-visible-layers img CLIP-TO-BOTTOM-LAYER)))
    (file-png-save-defaults RUN-NONINTERACTIVE img layer outfilename outfilename)
  )
)
(script-fu-register
 "docscan-file-text-enhance"
 "/Xtns/DocScan/file-text-enhance..."
 "load file, Picture->no process Text->Black and White"
 "Kazunori Takeuchi "
 "Kazunori Takeuchi"
 "2012-01-11"
 ""
 SF-FILENAME "filename" "t0001.bmp"
 SF-ADJUSTMENT "BWthreshold" '(192 0 255 1 8 0 SF-SPINNER)
 SF-VALUE "check-step" "50"
 SF-VALUE "flame-size" "20"
)
(define (docscan-cut-largeblack img white-layer check-x check-y check-step)
  (let* (
      (hist 0)
      (none 0)
      (wariai 0)
    )
    (gimp-rect-select img check-x check-y check-step check-step CHANNEL-OP-REPLACE TRUE 0)
    (set! hist (cdr (gimp-histogram white-layer HISTOGRAM-VALUE 223 255)))
    (set! none (car hist)) ; mean
    (set! hist (cdr hist))
    (set! none (car hist)) ; std-dev
    (set! hist (cdr hist))
    (set! none (car hist)) ; median
    (set! hist (cdr hist))
    (set! none (car hist)) ; pixels
    (set! hist (cdr hist))
    (set! none (car hist)) ; count
    (set! wariai (car hist)) ; percentile
    (if (= wariai 0) 
      (begin 
      (gimp-fuzzy-select white-layer (+ check-x (/ check-step 2)) (+ check-y (/ check-step 2)) 0 CHANNEL-OP-REPLACE FALSE FALSE 0 TRUE)
      (let*
        (
          (bounds (cdr (gimp-selection-bounds img)))
          (x1 (car bounds))
          (bounds (cdr bounds))
          (y1 (car bounds))
          (bounds (cdr bounds))
          (x2 (car bounds))
          (bounds (cdr bounds))
          (y2 (car bounds))
        )
        (gimp-rect-select img x1 y1 (- x2 x1) (- y2 y1) CHANNEL-OP-ADD FALSE 0)
        (gimp-edit-fill white-layer BACKGROUND-FILL)
        (gimp-edit-cut white-layer)
      )
      )
    )
  )
)
(define (docscan-text-enhance img bw_threshold check-step flame)
  (gimp-palette-set-foreground `(0 0 0))
  (gimp-palette-set-background `(255 255 255))
  (let* (
      (layer (car (gimp-image-get-active-layer img)))
      (white-layer layer)
      (layer-height (car (gimp-drawable-height layer)))
      (layer-width (car (gimp-drawable-width layer)))
      (check-x 0)
      (check-y 0)
    )
    ;真っ白レイヤー作成
    (set! white-layer (car (gimp-layer-copy layer 1)))
    (gimp-image-add-layer img white-layer -1)
    (gimp-drawable-set-visible layer FALSE)
    ;真っ白レイヤー、正規化/2値化
    (gimp-selection-all img)
    (gimp-levels-stretch white-layer)
    (gimp-threshold white-layer bw_threshold 255)
    ;枠、余白、白塗りつぶし
    (docscan-flame-clear img flame)
    ;写真部分透明化
    (set! check-x 0)
    (while (<= check-x layer-width)
      (set! check-y 0)
      (while (<= check-y layer-height)
	(docscan-cut-largeblack img white-layer check-x check-y check-step)
        (set! check-y (+ check-y check-step))
      )
      (set! check-x (+ check-x check-step))
    )
    (gimp-selection-all img)
    (gimp-drawable-set-visible layer TRUE)
  )
)
(script-fu-register
 "docscan-text-enhance"
 "/Xtns/DocScan/text-enhance..."
 "Picture->no process Text->Black and White"
 "Kazunori Takeuchi "
 "Kazunori Takeuchi"
 "2012-01-11"
 ""
 SF-IMAGE "Image" 0
 SF-ADJUSTMENT "BWthreshold" '(192 0 255 1 8 0 SF-SPINNER)
 SF-VALUE "check-step" "50"
 SF-VALUE "flame-size" "20"
)
(define (docscan-flame-clear img check)
  (let* (
      (draw (car (gimp-image-get-active-layer img)))
      (layer-height (car (gimp-drawable-height draw)))
      (layer-width (car (gimp-drawable-width draw)))
    )
    ;裏当て除去
    (gimp-rect-select img check check (- layer-width (+ check check)) (- layer-height (+ check check)) CHANNEL-OP-REPLACE FALSE 0)
    (gimp-selection-invert img)
    (gimp-edit-fill draw BACKGROUND-FILL)
    (gimp-displays-flush)
    (gimp-selection-all img)
    ;余白選択
    (gimp-fuzzy-select draw (+ check check) (+ check check) 15 CHANNEL-OP-REPLACE FALSE FALSE 0 TRUE)
    ;ゴミ除去
    (gimp-selection-invert img)
    (gimp-selection-shrink img 1)
    (gimp-selection-grow img 1)
    (gimp-displays-flush)
    (let* (
        (bounds (cdr (gimp-selection-bounds img)))
        (x1 (car bounds))
        (bounds (cdr bounds))
        (y1 (car bounds))
        (bounds (cdr bounds))
        (x2 (car bounds))
        (bounds (cdr bounds))
        (y2 (car bounds))
      )
      (gimp-rect-select img x1 y1 (- x2 x1) (- y2 y1) CHANNEL-OP-REPLACE FALSE 0)
    )
    (gimp-selection-invert img)
    (gimp-edit-fill draw BACKGROUND-FILL)
  )
  (gimp-displays-flush)
)
(script-fu-register
 "docscan-flame-clear"
 "/Xtns/DocScan/flame-clear..."
 "scan image flame clear"
 "Kazunori Takeuchi "
 "Kazunori Takeuchi"
 "2012-01-11"
 ""
 SF-IMAGE "Image" 0
; SF-IMAGE "Drawable" 0
 SF-VALUE "check-step" "20"
)
本日のリンク元 | 9 | 7 | 6 |

辞書