fix card bug
Showing
1 changed file
with
9 additions
and
4 deletions
| ... | @@ -244,6 +244,7 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -244,6 +244,7 @@ class Command(BaseCommand, LoggerMixin): |
| 244 | return date_res | 244 | return date_res |
| 245 | 245 | ||
| 246 | def merge_card(self, bs_summary): | 246 | def merge_card(self, bs_summary): |
| 247 | classify_info = {} | ||
| 247 | merged_bs_summary = {} | 248 | merged_bs_summary = {} |
| 248 | sorted_card = sorted(bs_summary.keys(), key=lambda x: bs_summary[x]['count'], reverse=True) | 249 | sorted_card = sorted(bs_summary.keys(), key=lambda x: bs_summary[x]['count'], reverse=True) |
| 249 | for main_card in sorted_card: | 250 | for main_card in sorted_card: |
| ... | @@ -266,10 +267,13 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -266,10 +267,13 @@ class Command(BaseCommand, LoggerMixin): |
| 266 | merge_cards.append(card) | 267 | merge_cards.append(card) |
| 267 | for card in merge_cards: | 268 | for card in merge_cards: |
| 268 | del bs_summary[card] | 269 | del bs_summary[card] |
| 269 | merged_bs_summary[main_card]['classify'] = self.get_most(merged_bs_summary[main_card]['classify']) | 270 | most_classify = self.get_most(merged_bs_summary[main_card]['classify']) |
| 271 | classify_count = classify_info.get(most_classify, 0) | ||
| 272 | classify_info[most_classify] = classify_count + 1 | ||
| 273 | merged_bs_summary[main_card]['classify'] = most_classify | ||
| 270 | merged_bs_summary[main_card]['role'] = self.get_most(merged_bs_summary[main_card]['role']) | 274 | merged_bs_summary[main_card]['role'] = self.get_most(merged_bs_summary[main_card]['role']) |
| 271 | del bs_summary | 275 | del bs_summary |
| 272 | return merged_bs_summary | 276 | return merged_bs_summary, classify_info |
| 273 | 277 | ||
| 274 | def prune_bs_summary(self, bs_summary): | 278 | def prune_bs_summary(self, bs_summary): |
| 275 | for summary in bs_summary.values(): | 279 | for summary in bs_summary.values(): |
| ... | @@ -341,15 +345,16 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -341,15 +345,16 @@ class Command(BaseCommand, LoggerMixin): |
| 341 | if len(bs_summary) == 1: | 345 | if len(bs_summary) == 1: |
| 342 | merged_bs_summary = self.prune_bs_summary(bs_summary) | 346 | merged_bs_summary = self.prune_bs_summary(bs_summary) |
| 343 | one_card = True | 347 | one_card = True |
| 348 | classify_info = {} | ||
| 344 | # 多卡号 | 349 | # 多卡号 |
| 345 | else: | 350 | else: |
| 346 | merged_bs_summary = self.merge_card(bs_summary) | 351 | merged_bs_summary, classify_info = self.merge_card(bs_summary) |
| 347 | 352 | ||
| 348 | for card_summary in merged_bs_summary.values(): | 353 | for card_summary in merged_bs_summary.values(): |
| 349 | merge_role = [] | 354 | merge_role = [] |
| 350 | classify_summary = unknown_summary.get(card_summary['classify'], {}) | 355 | classify_summary = unknown_summary.get(card_summary['classify'], {}) |
| 351 | for role, summary in classify_summary.items(): | 356 | for role, summary in classify_summary.items(): |
| 352 | if one_card or role in card_summary['role_set']: | 357 | if one_card or classify_info.get(card_summary['classify'], 0) == 1 or role in card_summary['role_set']: |
| 353 | merge_role.append(role) | 358 | merge_role.append(role) |
| 354 | # card_summary['confidence'].extend(summary['confidence']) | 359 | # card_summary['confidence'].extend(summary['confidence']) |
| 355 | card_summary['sheet'].extend(summary['sheet']) | 360 | card_summary['sheet'].extend(summary['sheet']) | ... | ... |
-
Please register or sign in to post a comment