pyocrでPDFファイルをOCR処理するコードを書きましたが、最後のページだけ処理されるようで、PDFファイルが2ページ以上だと1ページが処理されません。
1ページ目だけOCR処理されるようにするにはどうすればいいでしょうか?
読み込むPDFファイルは複合機でスキャンしたもので、pdfminerによって解析した構造?はLTFigureの中にLTImageがあるようでした。
Programming with PDFMiner
よろしくお願いいたします。
python
1from pdfminer.pdfparser import PDFParser 2from pdfminer.pdfdocument import PDFDocument 3from pdfminer.pdfpage import PDFPage 4from pdfminer.pdfpage import PDFTextExtractionNotAllowed 5from pdfminer.pdfinterp import PDFResourceManager 6from pdfminer.pdfinterp import PDFPageInterpreter 7from pdfminer.pdfdevice import PDFDevice 8from pdfminer.layout import LTPage, LAParams, LTTextBox, LTTextLine, LTImage, LTFigure 9from pdfminer.converter import PDFPageAggregator 10import io 11from PIL import Image 12import pyocr 13 14fp = open("test.pdf", "rb") 15 16parser = PDFParser(fp) 17document = PDFDocument(parser) 18rsrcmgr = PDFResourceManager() 19laparams = LAParams() 20device = PDFPageAggregator(rsrcmgr, laparams=laparams) 21interpreter = PDFPageInterpreter(rsrcmgr, device) 22 23for page in PDFPage.create_pages(document): 24 interpreter.process_page(page) 25 layout = device.get_result() 26 27for obj in layout: 28 if isinstance(obj, LTFigure): 29 for obj in obj: 30 if isinstance(obj, LTImage): 31 images = obj 32 33buffer = io.BytesIO() 34buffer.write(images.stream.get_rawdata()) 35buffer.seek(0) 36 37path_tesseract = "C:\Program Files\Tesseract-OCR" 38if path_tesseract not in os.environ["PATH"].split(os.pathsep): 39 os.environ["PATH"] += os.pathsep + path_tesseract 40tools = pyocr.get_available_tools() 41tool = tools[0] 42 43img_org = Image.open(buffer) 44builder = pyocr.builders.TextBuilder() 45result = tool.image_to_string(Image.open(buffer), lang="jpn", builder=builder) 46result
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/28 11:16