GameSentenceMiner 2.12.4__py3-none-any.whl → 2.12.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -194,19 +194,21 @@ def compare_ocr_results(prev_text, new_text, threshold=90):
194
194
  all_cords = None
195
195
  rectangles = None
196
196
  last_ocr2_result = []
197
+ last_sent_result = ""
197
198
 
198
199
  def do_second_ocr(ocr1_text, time, img, filtering, pre_crop_image=None, ignore_furigana_filter=False, ignore_previous_result=False):
199
- global twopassocr, ocr2, last_ocr2_result
200
+ global twopassocr, ocr2, last_ocr2_result, last_sent_result
200
201
  try:
201
202
  orig_text, text = run.process_and_write_results(img, None, last_ocr2_result if not ignore_previous_result else None, filtering, None,
202
203
  engine=get_ocr_ocr2(), furigana_filter_sensitivity=furigana_filter_sensitivity if not ignore_furigana_filter else 0)
203
204
 
204
- if compare_ocr_results(last_ocr2_result, orig_text):
205
+ if compare_ocr_results(last_sent_result, text, threshold=80):
205
206
  if text:
206
207
  logger.info("Seems like Text we already sent, not doing anything.")
207
208
  return
208
209
  save_result_image(img, pre_crop_image=pre_crop_image)
209
210
  last_ocr2_result = orig_text
211
+ last_sent_result = text
210
212
  asyncio.run(send_result(text, time))
211
213
  except json.JSONDecodeError:
212
214
  print("Invalid JSON received.")
@@ -291,7 +293,7 @@ def reset_callback_vars():
291
293
  run.set_last_image(None)
292
294
 
293
295
  def text_callback(text, orig_text, time, img=None, came_from_ss=False, filtering=None, crop_coords=None):
294
- global twopassocr, ocr2, previous_text, last_oneocr_time, text_stable_start_time, previous_orig_text, previous_img, force_stable, previous_ocr1_result, previous_text_list
296
+ global twopassocr, ocr2, previous_text, last_oneocr_time, text_stable_start_time, previous_orig_text, previous_img, force_stable, previous_ocr1_result, previous_text_list, last_sent_result
295
297
  orig_text_string = ''.join([item for item in orig_text if item is not None]) if orig_text else ""
296
298
  if came_from_ss:
297
299
  save_result_image(img)
@@ -304,12 +306,13 @@ def text_callback(text, orig_text, time, img=None, came_from_ss=False, filtering
304
306
  line_start_time = time if time else datetime.now()
305
307
 
306
308
  if manual or not get_ocr_two_pass_ocr():
307
- if compare_ocr_results(previous_orig_text, orig_text_string):
309
+ if compare_ocr_results(last_sent_result, text, 80):
308
310
  if text:
309
311
  logger.info("Seems like Text we already sent, not doing anything.")
310
312
  return
311
313
  save_result_image(img)
312
314
  asyncio.run(send_result(text, line_start_time))
315
+ last_sent_result = text
313
316
  previous_orig_text = orig_text_string
314
317
  previous_text = None
315
318
  previous_img = None
@@ -856,6 +856,9 @@ class OBSScreenshotThread(threading.Thread):
856
856
  self.current_source_name = self.current_source.get("sourceName") or None
857
857
  self.current_scene = scene if scene else obs.get_current_game()
858
858
  self.ocr_config = get_scene_ocr_config()
859
+ if not self.ocr_config:
860
+ logger.error("No OCR config found for the current scene.")
861
+ return
859
862
  self.ocr_config.scale_to_custom_size(self.width, self.height)
860
863
 
861
864
  # Register a scene switch callback in obsws
@@ -883,6 +886,7 @@ class OBSScreenshotThread(threading.Thread):
883
886
  continue
884
887
 
885
888
  if not self.ocr_config:
889
+ logger.info("No OCR config found for the current scene. Waiting for scene switch.")
886
890
  time.sleep(1)
887
891
  continue
888
892
 
@@ -896,7 +900,7 @@ class OBSScreenshotThread(threading.Thread):
896
900
  logger.error("No active source found in the current scene.")
897
901
  time.sleep(1)
898
902
  continue
899
- img = obs.get_screenshot_PIL(source_name=self.current_source_name, width=self.width, height=self.height, img_format='jpg', compression=90)
903
+ img = obs.get_screenshot_PIL(source_name=self.current_source_name, width=self.width, height=self.height, img_format='png', compression=80)
900
904
 
901
905
  if img is not None:
902
906
  if not img.getbbox():
@@ -314,7 +314,7 @@ async def get_full_screenshot() -> Image.Image | None:
314
314
  else:
315
315
  monitors = [monitors[0]]
316
316
  monitor = monitors[get_config().wip.monitor_to_capture]
317
- img = get_screenshot_PIL(compression=100, img_format='jpg')
317
+ img = get_screenshot_PIL(compression=90, img_format='jpg')
318
318
  # Put the image over a transparent background without stretching
319
319
  new_img = Image.new("RGBA", (monitor['width'], monitor['height']), (0, 0, 0, 0))
320
320
  # Calculate coordinates to center img horizontally and vertically
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GameSentenceMiner
3
- Version: 2.12.4
3
+ Version: 2.12.6
4
4
  Summary: A tool for mining sentences from games. Update: Overlay?
5
5
  Author-email: Beangate <bpwhelan95@gmail.com>
6
6
  License: MIT License
@@ -19,14 +19,14 @@ GameSentenceMiner/ocr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
19
19
  GameSentenceMiner/ocr/gsm_ocr_config.py,sha256=Ezj-0k6Wo-una91FvYhMp6KGkRhWYihXzLAoh_Wu2xY,5329
20
20
  GameSentenceMiner/ocr/ocrconfig.py,sha256=_tY8mjnzHMJrLS8E5pHqYXZjMuLoGKYgJwdhYgN-ny4,6466
21
21
  GameSentenceMiner/ocr/owocr_area_selector.py,sha256=O8qKOTDglk-D4N-2_ORLeZacXT-OVOCNxUI8sQHAlx4,25538
22
- GameSentenceMiner/ocr/owocr_helper.py,sha256=hP9j7bP9G_jwhRaWgbyVkzoPiNTmxuOTn0e1VQY9XMQ,25306
22
+ GameSentenceMiner/ocr/owocr_helper.py,sha256=To_tIGPgj68QkEGasQuh5vK6Zg-BLqJmkVHusp-q4Bs,25427
23
23
  GameSentenceMiner/ocr/ss_picker.py,sha256=0IhxUdaKruFpZyBL-8SpxWg7bPrlGpy3lhTcMMZ5rwo,5224
24
24
  GameSentenceMiner/owocr/owocr/__init__.py,sha256=87hfN5u_PbL_onLfMACbc0F5j4KyIK9lKnRCj6oZgR0,49
25
25
  GameSentenceMiner/owocr/owocr/__main__.py,sha256=XQaqZY99EKoCpU-gWQjNbTs7Kg17HvBVE7JY8LqIE0o,157
26
26
  GameSentenceMiner/owocr/owocr/config.py,sha256=qM7kISHdUhuygGXOxmgU6Ef2nwBShrZtdqu4InDCViE,8103
27
27
  GameSentenceMiner/owocr/owocr/lens_betterproto.py,sha256=oNoISsPilVVRBBPVDtb4-roJtAhp8ZAuFTci3TGXtMc,39141
28
28
  GameSentenceMiner/owocr/owocr/ocr.py,sha256=Zii5r15ZlHFJWSbmXpva6QJVGkU3j2wT5Q0izazLyCQ,63021
29
- GameSentenceMiner/owocr/owocr/run.py,sha256=GJAAqifaERxDnxcqPBTsEnxn-rJsUBgDC1s2F26N6KM,65724
29
+ GameSentenceMiner/owocr/owocr/run.py,sha256=BvUmJAb1YboDn3FNS6jP92i3gmYjTE_uGJi-_qG_LdY,65962
30
30
  GameSentenceMiner/owocr/owocr/screen_coordinate_picker.py,sha256=Na6XStbQBtpQUSdbN3QhEswtKuU1JjReFk_K8t5ezQE,3395
31
31
  GameSentenceMiner/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
32
  GameSentenceMiner/util/audio_offset_selector.py,sha256=8Stk3BP-XVIuzRv9nl9Eqd2D-1yD3JrgU-CamBywJmY,8542
@@ -63,10 +63,10 @@ GameSentenceMiner/web/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
63
63
  GameSentenceMiner/web/templates/index.html,sha256=Gv3CJvNnhAzIVV_QxhNq4OD-pXDt1vKCu9k6WdHSXuA,215343
64
64
  GameSentenceMiner/web/templates/text_replacements.html,sha256=tV5c8mCaWSt_vKuUpbdbLAzXZ3ATZeDvQ9PnnAfqY0M,8598
65
65
  GameSentenceMiner/web/templates/utility.html,sha256=3flZinKNqUJ7pvrZk6xu__v67z44rXnaK7UTZ303R-8,16946
66
- GameSentenceMiner/wip/get_overlay_coords.py,sha256=yivn8C26BBRK4cjE7yPv1XfvbyqWC0itLL9Vay8aY-c,19780
67
- gamesentenceminer-2.12.4.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
68
- gamesentenceminer-2.12.4.dist-info/METADATA,sha256=xidAx_PVQT2GCaZoAkfYeMAJHqAppcpiPhmZ5Lhz1X4,7061
69
- gamesentenceminer-2.12.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
70
- gamesentenceminer-2.12.4.dist-info/entry_points.txt,sha256=2APEP25DbfjSxGeHtwBstMH8mulVhLkqF_b9bqzU6vQ,65
71
- gamesentenceminer-2.12.4.dist-info/top_level.txt,sha256=V1hUY6xVSyUEohb0uDoN4UIE6rUZ_JYx8yMyPGX4PgQ,18
72
- gamesentenceminer-2.12.4.dist-info/RECORD,,
66
+ GameSentenceMiner/wip/get_overlay_coords.py,sha256=4tUrNu5_MTVqjYO-oC0seydbwyhLdFJd3fptHx5zjdI,19779
67
+ gamesentenceminer-2.12.6.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
68
+ gamesentenceminer-2.12.6.dist-info/METADATA,sha256=JmVROmN8-FTjkvx3Shvya4ac6aHjyZNFAC5FXkiS2ME,7061
69
+ gamesentenceminer-2.12.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
70
+ gamesentenceminer-2.12.6.dist-info/entry_points.txt,sha256=2APEP25DbfjSxGeHtwBstMH8mulVhLkqF_b9bqzU6vQ,65
71
+ gamesentenceminer-2.12.6.dist-info/top_level.txt,sha256=V1hUY6xVSyUEohb0uDoN4UIE6rUZ_JYx8yMyPGX4PgQ,18
72
+ gamesentenceminer-2.12.6.dist-info/RECORD,,