Solución:
Eche un vistazo a mi código, me funcionó.
import os
import io
from PIL import Image
import pytesseract
from wand.image import Image as wi
import gc
pdf=wi(filename=pdf_path,resolution=300)
pdfImg=pdf.convert('jpeg')
imgBlobs=[]
extracted_text=[]
def Get_text_from_image(pdf_path):
pdf=wi(filename=pdf_path,resolution=300)
pdfImg=pdf.convert('jpeg')
imgBlobs=[]
extracted_text=[]
for img in pdfImg.sequence:
page=wi(image=img)
imgBlobs.append(page.make_blob('jpeg'))
for imgBlob in imgBlobs:
im=Image.open(io.BytesIO(imgBlob))
text=pytesseract.image_to_string(im,lang='eng')
extracted_text.append(text)
return (extracted_text)
Lo arreglé para mí editando el /etc/ImageMagick-6/policy.xml y cambié los derechos de la línea pdf a “leer | escribir”:
Abre la terminal y cambia la ruta
cd /etc/ImageMagick-6
nano policy.xml
<policy domain="coder" rights="read" pattern="PDF" />
change to
<policy domain="coder" rights="read|write" pattern="PDF" />
exit
Cuando estaba extrayendo las imágenes pdf en texto, enfrenté algunos problemas, vaya al siguiente enlace
https://stackoverflow.com/questions/52699608/wand-policy-error-
error-constitute-c-readimage-412
https://stackoverflow.com/questions/52861946/imagemagick-not-
authorized-to-convert-pdf-to-an-image
Increasing the memory limit please go through the below link
enter code here
https://github.com/phw/peek/issues/112
https://github.com/ImageMagick/ImageMagick/issues/396
Eche un vistazo a esta biblioteca: https://pypi.python.org/pypi/pypdfocr pero un archivo PDF también puede tener imágenes. Es posible que pueda analizar los flujos de contenido de la página. Algunos escáneres dividen la página escaneada en imágenes, por lo que no obtendrá el texto con ghostscript.
Convierta archivos PDF, utilizando pytesseract para hacer el OCR, y exporte cada página de los archivos PDF a un archivo de texto.
Instale estos ….
conda install -c conda-forge pytesseract
conda install -c conda-forge tesseract
pip instalar pdf2image
import pytesseract
from pdf2image import convert_from_path
import glob
pdfs = glob.glob(r"yourPath*.pdf")
for pdf_path in pdfs:
pages = convert_from_path(pdf_path, 500)
for pageNum,imgBlob in enumerate(pages):
text = pytesseract.image_to_string(imgBlob,lang='eng')
with open(f'{pdf_path[:-4]}_page{pageNum}.txt', 'w') as the_file:
the_file.write(text)