T 用户扫描收据并将输出放入可编辑的文本中,如果 OCR 出错,用户可以对其进行调整。
我有一个“确认”按钮,应该从这些可编辑的文本字段中获取数据并将其放入一个名为“历史”的新片段中,该片段应该是一个表,它只存储扫描的每个新收据的数据。有 3 行简单的“Total”、“Data”、“Store”。
如何实现这个功能?
设置 TabBar 的 MainActivity 的代码: class MainActivity : AppCompatActivity() {
private lateinit var viewPager: ViewPager
private lateinit var tabs: TabLayout
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewPager = findViewById(R.id.viewPager)
tabs = findViewById(R.id.tabs)
setUpTabs()
}
private fun setUpTabs(){
val adapter = ViewPagerAdapter(supportFragmentManager)
adapter.addFragment(HomeFragment(),"")
adapter.addFragment(HistoryFragment(),"")
adapter.addFragment(Scanner(),"")
viewPager.adapter = adapter
tabs.setupWithViewPager(viewPager)
tabs.getTabAt(0)!!.setIcon(R.drawable.ic_baseline_home_24)
tabs.getTabAt(1)!!.setIcon(R.drawable.ic_baseline_show_chart_24)
tabs.getTabAt(2)!!.setIcon(R.drawable.ic_baseline_receipt_24)
}
在我的 OCR 片段中,这是 Textrecognition 的代码并将其放在 TextView 中:
private fun textRecognitionAction() {
var text = ""
receiptsViewModel.textDetector.process(mlkitImage)
.addOnSuccessListener {
pb.visibility = View.GONE
for (block in it.textBlocks) text += block.text + "\n"
val receipts = receiptsViewModel.getReceipts(text)
editTotal.setText(receipts.total, TextView.BufferType.EDITABLE)
editStore.setText(receipts.store, TextView.BufferType.EDITABLE)
editDate.setText(receipts.date, TextView.BufferType.EDITABLE)
}
}