質問編集履歴
1
誤字修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,35 +8,31 @@
|
|
8
8
|
テキストの文字が1ブロックになっている場合(表現が適切か分かりませんが)は読み取れますが、
|
9
9
|
複数に分かれている場合に出力できません。(文末に補足の画像を掲載しました)
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
```ここに言語を入力
|
13
|
-
python
|
14
|
-
|
15
|
-
|
12
|
+
コード
|
16
13
|
from pdfminer.high_level import extract_text
|
17
14
|
from pdfminer.layout import LAParams, LTTextBoxHorizontal, LTTextLineHorizontal
|
18
15
|
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
|
19
16
|
from pdfminer.pdfpage import PDFPage
|
20
17
|
from pdfminer.converter import PDFPageAggregator
|
21
18
|
|
22
|
-
# 範囲を指定
|
23
|
-
# x1, y1, x2, y2 = 100, 100, 200, 200 #座標
|
24
19
|
|
25
|
-
#
|
20
|
+
x1, y1, x2, y2 = 100,100,200,200 #範囲を指定
|
21
|
+
|
26
|
-
with open('/e
|
22
|
+
with open('/rename/image.pdf', 'rb') as pdf_file: # PDFファイルを開く
|
27
|
-
|
23
|
+
|
28
|
-
resource_manager = PDFResourceManager()
|
24
|
+
resource_manager = PDFResourceManager() # PDFMinerのリソースマネージャーを初期化
|
29
25
|
laparams = LAParams()
|
30
26
|
device = PDFPageAggregator(resource_manager, laparams=laparams)
|
31
27
|
interpreter = PDFPageInterpreter(resource_manager, device)
|
32
28
|
|
33
|
-
|
29
|
+
|
34
|
-
for page in PDFPage.get_pages(pdf_file):
|
30
|
+
for page in PDFPage.get_pages(pdf_file): # ページごとに処理
|
35
31
|
interpreter.process_page(page)
|
36
32
|
layout = device.get_result()
|
37
33
|
|
38
|
-
|
34
|
+
|
39
|
-
for lt_obj in layout:
|
35
|
+
for lt_obj in layout: # ページ内のテキストをチェック
|
40
36
|
if isinstance(lt_obj, (LTTextBoxHorizontal, LTTextLineHorizontal)):
|
41
37
|
x, y, _, _ = lt_obj.bbox
|
42
38
|
if x1 <= x <= x2 and y1 <= y <= y2:
|
@@ -44,8 +40,13 @@
|
|
44
40
|
print(text)
|
45
41
|
|
46
42
|
|
43
|
+
|
44
|
+
|
45
|
+
|
47
46
|
### 試したこと
|
47
|
+
検出された複数のテキストに対して、OCRさせたい両端の座標を入力すればよいのではないかと想定して試しましたが、
|
48
|
+
結果はダメでした。(補足情報欄にイメージを掲載しました)
|
48
|
-
pdf内のテキストの座標は、以下のコードを実行して取得しました。
|
49
|
+
なお、pdf内のテキストの座標は、以下のコードを実行して取得しました。
|
49
50
|
python
|
50
51
|
|
51
52
|
コード
|
@@ -57,10 +58,8 @@
|
|
57
58
|
from pdfminer.pdfinterp import PDFPageInterpreter
|
58
59
|
from pdfminer.layout import LAParams
|
59
60
|
from pdfminer.converter import PDFPageAggregator
|
60
|
-

|
61
61
|
# PDFファイルのパスを指定
|
62
|
-
# pdf_file_path = "/rename/simple1.pdf"
|
63
|
-
pdf_file_path = "/
|
62
|
+
pdf_file_path = "/image.pdf"
|
64
63
|
|
65
64
|
# PDFファイルをバイナリ形式で開く
|
66
65
|
with open(pdf_file_path, 'rb') as fp:
|
@@ -90,8 +89,4 @@
|
|
90
89
|
if hasattr(element, "get_text"):
|
91
90
|
print("Text: ", element.get_text())
|
92
91
|
print("Position: ", element.bbox)
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
### 補足情報(FW/ツールのバージョンなど)
|
97
|
-

|