generate_line_box.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. import io
  4. import argparse
  5. import unicodedata
  6. from PIL import Image
  7. import sys
  8. reload(sys)
  9. sys.setdefaultencoding('utf8')
  10. #
  11. # command line arguments
  12. #
  13. arg_parser = argparse.ArgumentParser('''Creates tesseract box files for given (line) image text pairs''')
  14. # Text ground truth
  15. arg_parser.add_argument('-t', '--txt', nargs='?', metavar='TXT', help='Line text (GT)', required=True)
  16. # Image file
  17. arg_parser.add_argument('-i', '--image', nargs='?', metavar='IMAGE', help='Image file', required=True)
  18. args = arg_parser.parse_args()
  19. #
  20. # main
  21. #
  22. # load image
  23. with open(args.image, "rb") as f:
  24. width, height = Image.open(f).size
  25. # load gt
  26. with io.open(args.txt, "r", encoding='utf-8') as f:
  27. lines = f.read().strip().split('\n')
  28. for line in lines:
  29. if line.strip():
  30. for i in range(1, len(line)):
  31. char = line[i]
  32. prev_char = line[i-1]
  33. if unicodedata.combining(char):
  34. print(u"%s %d %d %d %d 0" % ((prev_char + char), 0, 0, width, height))
  35. elif not unicodedata.combining(prev_char):
  36. print(u"%s %d %d %d %d 0" % (prev_char, 0, 0, width, height))
  37. if not unicodedata.combining(line[-1]):
  38. print(u"%s %d %d %d %d 0" % (line[-1], 0, 0, width, height))
  39. print(u"%s %d %d %d %d 0" % ("\t", width, height, width+1, height+1))