你如何在烧瓶应用程序中使用 pytesseract
How do you use pytesseract in a flask app
我想构建一个允许用户上传带有文本的图像的 Flask 应用程序。然后我想让 pytesseract 提取文本并 return 它。
我做了一些研究,发现了这篇文章:
https://stackabuse.com/pytesseract-simple-python-optical-character-recognition/#disqus_thread
它很好地解释了我想做什么。我唯一不明白的是我应该在哪里保存定义了 ocr_core 函数的 OCR 脚本。因为在文章中他后面可以导入函数。
该文件应命名为 ocr_core.py
并保存在与 app.py
.
相同的目录中
考虑 ocr_core.py
:
try:
from PIL import Image
except ImportError:
import Image
import pytesseract
def ocr_core(filename):
"""
This function will handle the core OCR processing of images.
"""
text = pytesseract.image_to_string(Image.open(filename)) # We'll use Pillow's Image class to open the image and pytesseract to detect the string in the image
return text
在 app.py
中,行 from ocr_core import ocr_core
从模块 ocr_core
.
导入函数 ocr_core
换句话说:from some_module import some_func
将从文件 some_module.py
.
中的 some_module
模块导入 some_func
函数
还有教程的地方,接近ocr_core.py
的结尾:
print(ocr_core('images/ocr_example_1.png'))
从技术上讲,该行将在 app.py
中导入 运行 的位置处执行。它看起来像是用于测试功能的一行。通常这应该在一个块中:
if __name__ == '__main__':
print(ocr_core('images/ocr_example_1.png'))
这意味着它只会在您 运行 使用 python 解释器 python ocr_core.py
时执行 - 而不是在某个地方导入该模块时。根据教程,当您启动 Flask 服务器时,打印行会 运行,这可能是不可取的。
我想构建一个允许用户上传带有文本的图像的 Flask 应用程序。然后我想让 pytesseract 提取文本并 return 它。
我做了一些研究,发现了这篇文章: https://stackabuse.com/pytesseract-simple-python-optical-character-recognition/#disqus_thread
它很好地解释了我想做什么。我唯一不明白的是我应该在哪里保存定义了 ocr_core 函数的 OCR 脚本。因为在文章中他后面可以导入函数。
该文件应命名为 ocr_core.py
并保存在与 app.py
.
考虑 ocr_core.py
:
try:
from PIL import Image
except ImportError:
import Image
import pytesseract
def ocr_core(filename):
"""
This function will handle the core OCR processing of images.
"""
text = pytesseract.image_to_string(Image.open(filename)) # We'll use Pillow's Image class to open the image and pytesseract to detect the string in the image
return text
在 app.py
中,行 from ocr_core import ocr_core
从模块 ocr_core
.
ocr_core
换句话说:from some_module import some_func
将从文件 some_module.py
.
some_module
模块导入 some_func
函数
还有教程的地方,接近ocr_core.py
的结尾:
print(ocr_core('images/ocr_example_1.png'))
从技术上讲,该行将在 app.py
中导入 运行 的位置处执行。它看起来像是用于测试功能的一行。通常这应该在一个块中:
if __name__ == '__main__':
print(ocr_core('images/ocr_example_1.png'))
这意味着它只会在您 运行 使用 python 解释器 python ocr_core.py
时执行 - 而不是在某个地方导入该模块时。根据教程,当您启动 Flask 服务器时,打印行会 运行,这可能是不可取的。