yrarchi / household_accounts

レシートのデータ化
19 stars 8 forks source link

レシートを読み取りたい #4

Closed yrarchi closed 4 years ago

yrarchi commented 4 years ago

レシートを目で見て手打ちするのをやめたい。

yrarchi commented 4 years ago

OCR

簡単に検索すると、Pythonから扱えるOCRとしては以下が多くヒットした

後者は、GCPで設定が必要だったこと、一定量を超えると有料(超えなそうではあったが)だったことより、前者を使ってレシートを読み取ることを試してみる。

yrarchi commented 4 years ago

tesseract

$tesseract eurotext.png eurotext_txt
Tesseract Open Source OCR Engine v4.1.1 with Leptonica

ほぼ正確に認識できていた

https://tesseract-ocr.github.io/tessdoc/Data-Files.html#updated-data-files-for-version-400-september-15-2017 に言語のファイルについて説明あり

/usr/local/Cellar/tesseract/4.1.1/share/tessdata/にhttps://github.com/tesseract-ocr/tessdata_fast/blob/master/jpn.traineddata を追加した

言語を日本語に指定して実行してみる

 $tesseract test_jpn.png test_jpn_txt -l jpn
Tesseract Open Source OCR Engine v4.1.1 with Leptonica
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 150

解像度の警告が出ているけど、かなり正確に文字認識できていた

yrarchi commented 4 years ago

pyocr

https://gitlab.gnome.org/World/OpenPaperwork/pyocr#image-to-text に例があるので、それを試してみて実行できることを確認した

result = tool.image_to_string(
    Image.open(input_file),
    lang=lang,
    builder=pyocr.builders.TextBuilder()
)

こんな感じで実行できる

builder部分の違いについて

yrarchi commented 4 years ago

とりあえずOCRを行える状態にはできたので、具体的な作業はhttps://github.com/yrarchi/household_accounts/issues/5 で行っていく