python tesseract 结果在句子之间产生不需要的额外行间隙
python tesseract results giving unwanted extra line gaps between sentences
我正在使用 tesseract 执行一些 OCR 操作。我为此编写了一个简单的 python 包装器。问题是我在结束文本文件中的句子之间出现不需要的行间隙,我需要以编程方式将其删除。例如:
1 tbsp peanut or corn oil, plus a little
extra for Cooking the scallops
2 tbsp bottled mild or medium Thai
green curry paste
2 tbsp water
2 tsp light soy sauce
请注意一些行间隙——我需要将其删除。如果您遇到类似问题,请分享一些提示。谢谢。
这是包装纸:
from PIL import Image
import subprocess
import os
from wand.image import Image
import markdown2
from textblob import TextBlob
import util
import errors
tesseract_exe = "tesseract" # Name of executable to be called at command line
scratch_text_name_root = "temp" # Leave out the .txt extension
cleanup_scratch_flag = True # Temporary files cleaned up after OCR operation
pagesegmode = "-psm 0"
def call_tesseract(input_file, output_file):
args = [tesseract_exe, input_file, output_file, pagesegmode]
proc = subprocess.Popen(args)
retcode = proc.wait()
if retcode !=0:
errors.check_for_errors()
def retrieve_text(scratch_text_name_root):
inf = file(scratch_text_name_root + '.txt')
text = inf.read()
inf.close()
return text
def write_to_file(filename, string):
File = open(filename, 'w')
File.write(string)
File.close()
def image_to_string(filename):
try:
call_tesseract(filename, scratch_text_name_root)
text = retrieve_text(scratch_text_name_root)
finally:
try:
os.remove(scratch_text_name_root)
except OSError:
pass
return text
filename = "book/0001.bin.png"
text = image_to_string(filename)
print "writing to file"
write_to_file("0002.bin.txt", text)
我不确定为什么 tesseract 给你这些空行,但也许一个简单的解决方法可以帮助你:
只需删除这些空行即可。
有很多方法可以做到这一点,例如看这里:
或此处:
这些解决方案都假定您逐行读取文件。
我喜欢这个 solution 因为您可以在完成的字符串中直接使用它并且它处理 OS 行尾差异(\n、\n\r、\r\n ).
我正在使用 tesseract 执行一些 OCR 操作。我为此编写了一个简单的 python 包装器。问题是我在结束文本文件中的句子之间出现不需要的行间隙,我需要以编程方式将其删除。例如:
1 tbsp peanut or corn oil, plus a little
extra for Cooking the scallops
2 tbsp bottled mild or medium Thai
green curry paste
2 tbsp water
2 tsp light soy sauce
请注意一些行间隙——我需要将其删除。如果您遇到类似问题,请分享一些提示。谢谢。
这是包装纸:
from PIL import Image
import subprocess
import os
from wand.image import Image
import markdown2
from textblob import TextBlob
import util
import errors
tesseract_exe = "tesseract" # Name of executable to be called at command line
scratch_text_name_root = "temp" # Leave out the .txt extension
cleanup_scratch_flag = True # Temporary files cleaned up after OCR operation
pagesegmode = "-psm 0"
def call_tesseract(input_file, output_file):
args = [tesseract_exe, input_file, output_file, pagesegmode]
proc = subprocess.Popen(args)
retcode = proc.wait()
if retcode !=0:
errors.check_for_errors()
def retrieve_text(scratch_text_name_root):
inf = file(scratch_text_name_root + '.txt')
text = inf.read()
inf.close()
return text
def write_to_file(filename, string):
File = open(filename, 'w')
File.write(string)
File.close()
def image_to_string(filename):
try:
call_tesseract(filename, scratch_text_name_root)
text = retrieve_text(scratch_text_name_root)
finally:
try:
os.remove(scratch_text_name_root)
except OSError:
pass
return text
filename = "book/0001.bin.png"
text = image_to_string(filename)
print "writing to file"
write_to_file("0002.bin.txt", text)
我不确定为什么 tesseract 给你这些空行,但也许一个简单的解决方法可以帮助你:
只需删除这些空行即可。 有很多方法可以做到这一点,例如看这里:
或此处:
这些解决方案都假定您逐行读取文件。
我喜欢这个 solution 因为您可以在完成的字符串中直接使用它并且它处理 OS 行尾差异(\n、\n\r、\r\n ).