0

T 用户扫描收据并将输出放入可编辑的文本中,如果 OCR 出错,用户可以对其进行调整。

我有一个“确认”按钮,应该从这些可编辑的文本字段中获取数据并将其放入一个名为“历史”的新片段中,该片段应该是一个表,它只存储扫描的每个新收据的数据。有 3 行简单的“Total”、“Data”、“Store”。

如何实现这个功能?

这是使用 OCR 时的外观这是我稍后在“历史记录”选项卡中想要的

设置 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)

        }
}
4

0 回答 0