ocr - tesseract 5.0 bazaar + user-words 配置不起作用
问题描述
我试图强制 tesseract 在执行 OCR 时只使用我的单词列表。首先,我将集市文件复制到/usr/share/tesseract-ocr/5/tessdata/configs/
. 这是我的集市文件:
load_system_dawg F
load_freq_dawg F
user_words_suffix user-words
然后,我eng.user-words
在/usr/share/tesseract-ocr/5/tessdata
. 这是我的用户词文件:
Items
VAT
included
CASH
然后我通过命令对该图像执行 ocr tesseract -l eng --oem 2 test_small.jpg stdout bazaar
:。
这是我的结果:
2 Item(s) (VAT includsd) 36,000
casH 40,000
CHANGE 4. 000
如您所见,includsd
它不在我的用户词文件中,它应该被“包含”。bazaaz
此外,即使没有在命令中使用配置,我也得到了相同的结果。看起来我的bazaar
和eng.user-words
配置对 OCR 输出没有任何影响。那么如何使用bazaar
和user-words
配置,以获得想要的结果呢?
解决方案
您需要做的就是对图像进行上采样。
如果你上采样两次
现在阅读:
2 Item(s) (VAT included) 36,000
CASH 40,000
CHANGE 4,000
代码:
import cv2
import pytesseract
# Load the image
img = cv2.imread("4nGXo.jpg")
# Convert to the gray-scale
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Up-sample
gry = cv2.resize(gry, (0, 0), fx=2, fy=2)
# OCR
print(pytesseract.image_to_string(gry))
# Display
cv2.imshow("", gry)
cv2.waitKey(0)
推荐阅读
- vue.js - 是否总是需要在数据中声明属性:{ }
- reactjs - 在 react-hook-forms 表单中动态添加或删除项目并注册输入?
- r - 如何根据开始和结束日期计算季度下降的观察次数?
- pyspark - 在groupBy之后按另一列的最大值查询一列
- reactjs - npx react-native run-windows 在 CPP 构建阶段失败
- java - IntelliJ IDEA 中的通配符导入
- flutter - 如何将通过 Timer.periodic 从 API 检索到的数据集成到 Flutter Cubit 项目中
- python - 获取容器的所有 pod,将它们存储在文本文件中,然后在单个命令中将这些文件用作 args
- javascript - Laravel 8 和 PHP:使用 Google Cloud Speech to Text API
- mariadb - Debezium MySQL schema_only 快照模式语义