回答編集履歴
3
改行を削除
answer
CHANGED
@@ -23,8 +23,7 @@
|
|
23
23
|
```
|
24
24
|
|
25
25
|
[追記]
|
26
|
-
ソースコード外でなんとかしたいと言うことなのでpyocrの問題箇所にモンキーパッチを充てる方法を追記します。
|
26
|
+
ソースコード外でなんとかしたいと言うことなのでpyocrの問題箇所にモンキーパッチを充てる方法を追記します。ただしパッケージが更新した際に問題が発生すると言うことは解消されません。
|
27
|
-
ただしパッケージが更新した際に問題が発生すると言うことは解消されません。
|
28
27
|
|
29
28
|
```python
|
30
29
|
import pyocr
|
2
モンキーパッチを追記
answer
CHANGED
@@ -20,4 +20,45 @@
|
|
20
20
|
|
21
21
|
if __name__ == "__main__":
|
22
22
|
unittest.main()
|
23
|
+
```
|
24
|
+
|
25
|
+
[追記]
|
26
|
+
ソースコード外でなんとかしたいと言うことなのでpyocrの問題箇所にモンキーパッチを充てる方法を追記します。
|
27
|
+
ただしパッケージが更新した際に問題が発生すると言うことは解消されません。
|
28
|
+
|
29
|
+
```python
|
30
|
+
import pyocr
|
31
|
+
...
|
32
|
+
def run_tesseract_monkey_patch(input_filename, output_filename_base, cwd=None, lang=None, flags=None, configs=None):
|
33
|
+
# オリジナルのソースコードをコピペ
|
34
|
+
pyocr.tesseract._set_environment()
|
35
|
+
command = [
|
36
|
+
pyocr.tesseract.TESSERACT_CMD,
|
37
|
+
input_filename,
|
38
|
+
output_filename_base,
|
39
|
+
]
|
40
|
+
if lang is not None:
|
41
|
+
command += ["-l", lang]
|
42
|
+
if flags is not None:
|
43
|
+
command += flags
|
44
|
+
if configs is not None:
|
45
|
+
command += configs
|
46
|
+
proc = subprocess.Popen(
|
47
|
+
command,
|
48
|
+
cwd=cwd,
|
49
|
+
startupinfo=pyocr.tesseract.g_subprocess_startup_info,
|
50
|
+
creationflags=pyocr.tesseract.g_creation_flags,
|
51
|
+
stdout=subprocess.PIPE,
|
52
|
+
stderr=subprocess.STDOUT,
|
53
|
+
)
|
54
|
+
errors = proc.stdout.read()
|
55
|
+
status = proc.wait()
|
56
|
+
proc.stdout.close()
|
57
|
+
return (status, errors)
|
58
|
+
|
59
|
+
|
60
|
+
def main():
|
61
|
+
pyocr.tesseract.run_tesseract = run_tesseract_monkey_patch
|
62
|
+
# get_version()も同じように上書きする
|
63
|
+
# 以降普通に処理
|
23
64
|
```
|
1
おかしな日本語を修正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
`pyocr`と言うパッケージの[ソースコード tesseract.py](https://gitlab.gnome.org/World/OpenPaperwork/pyocr/-/blob/master/src/pyocr/tesseract.py)を確認しました。`tesseract`と言うコマンドを`subprocess.Popen()`で呼び出していますが、stdoutを開けっ放しのままにしてcloseしていないことが原因です。`pyocr`の開発者に連絡を取らない限り、根本的な解決にはならないでしょう。
|
2
2
|
|
3
|
-
以下、同様のエラーを出力ソースコードです。
|
3
|
+
以下、同様のエラーを出力するソースコードです。
|
4
4
|
|
5
5
|
```python
|
6
6
|
import unittest
|